Kill The Java Language – A Message For Scripting Language Leads
At JavaOne this year I spent a lot of time following the scripting and dynamic languages space. The speakers for all these ‘other’ languages insisted that we had entered an age where developers would use multiple languages. They said that developers would select languages based on the nature and domain of the requirement.
Most also insisted that their language wasn’t competing with Java and would compliment Java and be used along with it. Some of the leads also felt that developers need to get used to this paradigm shift as soon as possible.
I have serious doubts about this idea of simultaneous use of multiple languages. Most developers & architects that I know primarily work with one language at a time. If they develop a liking for a new language they might dump the old one and use the new language to provide all kinds of solutions. People who once used C, C++, VB, etc dumped those languages and moved onto Java. These former C & C++ users no longer use those languages and develop everything with Java. Who has the time or energy to keep learning and following two languages?
So if the proponents of dynamic languages keep saying that their language is to be used along with Java, I don’t think they will ever make it big. They might get curiosity from thousands of developers but only a tiny percentage of developers will ever develop using two or more languages at one time. For the majority of developers to adopt a new language like Groovy, Scala, Jython, JRuby or anything else, these languages have to aim to beat the Java language. Playing second fiddle will not take them too far.
There are of course some advantages of playing along with Java and not projecting oneself as a competitor. The primary is that these languages are welcomed by the Java community & by Sun. They also get easy access to conferences and forums like JavaOne to spread their message to thousands of Java developers.
I have been writing and speaking about Groovy and Grails for the past few years. I am convinced of their abilities but I still do not see mass adoption.
For many years now we have been talking of the various scripting languages as promising and interesting but they just don’t seem to want to move to the next level.
To quote an example from the sport of cricket, ‘Yuvraj Singh’ from India burst on the international scene as an 18 year old prodigy and was expected to become one of the greatest ever. For years cricket enthusiasts talked of his great talent. However not only did he not manage to dethrone the established biggies in the team but he also seemed content with just being the talented and promising young man. He got his window of opportunity when he could have made it big. Many years on, today he is nowhere near being a legend.
Similarly, all the scripting languages are being hailed as cool and promising for several years now. However the window of opportunity isn’t going to stay open forever. Unless they move quickly they never will become a Java or a C++ and might start fading away once the current leads move on to other things.
My suggestion to all the scripting language leads, is to stop playing at being the Java language’s best friend. You very well can be friends with the Java platform and the JVM but the Java language is not your friend. Aim at killing the Java language if you hope to ever make it big.
Request readers to go through the entire article and not jump to a conclusion based on just the title. Although I don’t think that the title is inappropriate, based on some reactions in a few forums, I can see that it’s being misinterpreted. I am very much a supporter of Java and have no interest in seeing its demise.
The reason for the post is that I find all the great work that’s being put into the new languages very impressive. I just think that the languages are not getting due rewards for their efforts as they are being defensive. I have said “Scripting languages should ‘aim’ / ‘aspire’ to compete and beat Java” and not that “Java should die” or “I want the scripting languages to kill Java”.
It’s the aim, the growth plan, strategy for the scripting languages that I am referring to. I want Java to thrive and prosper but there’s no harm in having healthy new competitors. Competitors who will only push Java to get even better.
– Harshad
Hello,
I think that it is very true about what is said from two ends.
If you want to make general purpose scripting language, it will have to compete with the Java language fully and anything else with cause it to likely be washed aside. This is the realm where JRuby, Jython, Groovy, Pnuts and some others fall into at the moment. They lend you to thinking different all the time in solving problems and you really don’t want to go back to the Java language. There are just those small bugs of interface points that lack behind that keep them from being full replacements and annoy developers who want to use them.
It you want to make specialized scripting language, then to complement Java or other top level general purpose langauge is likely to best route. In web applications design using multiple languages is the only way to get work done productively and accepted by the environment space. We use declarative (structure and style), and imperative (events and actions) languages because on the one had there is no choice and the other if there is one, like outputting xhtml, changing styles, and event handling all in javascript, would be horrendous to work with in some environments.
That is usually the reason why many of these scripting languages are failing. They are not trying to be specialized, although they claim to have such use be there fit in the development ecosystem. Either go full tilt in your language and allow to be the one major mindset of the developer, chop off the extra baggage and allow it to really just be really thin glue, or create a market where it is the only choice for a particular task and let other fill in the surrounding gaps where there support languages. Just don’t keep doing what you are claiming with these mulit-use-same task languages. Thank you. Good day.
Yemi Bedu
Agile methodology is used for fast developing applications.Its better to developing the projects.
(a) The Languages : In the context of your article, especially given the scenario that you have quoted primarily the JVM based languages, a distinction needs to be clearly made between Java the language and Java the runtime (JVM and its ecosystem).
Unless I had a definite need to coexist and cooperate with a JVM based ecosystem I would be far less likely to use JRuby and Jython (would rather use Ruby and Python directly). The scripting languages in the JVM ecosystem are imho unlikely to be adopted by themselves – they are a supplement not a replacement. The supplement may not be a component to an application but at times me be an application to an overall enterprise architecture strategy which rides more often than not on JEE.
The supplement languages even if one assumes can and will kill Java – they can only kill the language – not the JVM (kind of Java is Dead, Long Live Java)
(b) Learning multiple languages : I think there is one use case where architects/developers do often work with multiple languages simultaneously. A typical example is the fact that we all do use DHTML + JS + CSS + (Java / name your language). When another language does the job far better than the default one in usage, just makes sense to adopt it as well for specific areas it is much better at. Recently I wrote some logic in C (less than 5% of total code base, only because thats what made most sense in that context) and then turned over the results to another language through an XML datastream. The question to be answered is whether the other language is supplementing the application development goal by bringing in some really strong capability. Most architects will happily learn the new language if they need to and adopt it for a small part of their architecture.
(c) For all the JVM based languages, the reason the scripting leads need to treat Java as the best friend is that they are trying to implement a slow march into a strong fiefdom called java. Their best bet in this case is to convince others that by riding on the JVM they are partners and competitors. Exceptionally unlikely you will get any ‘kill java’ from them at this stage
Harshad,
(a) The Languages : In the context of your article, especially given the scenario that you have quoted primarily the JVM based languages, a distinction needs to be clearly made between Java the language and Java the runtime (JVM and its ecosystem).
Unless I had a definite need to coexist and cooperate with a JVM based ecosystem I would be far less likely to use JRuby and Jython (would rather use Ruby and Python directly). The scripting languages in the JVM ecosystem are imho unlikely to be adopted by themselves – they are a supplement not a replacement. The supplement may not be a component to an application but at times me be an application to an overall enterprise architecture strategy which rides more often than not on JEE.
The supplement languages even if one assumes can and will kill Java – they can only kill the language – not the JVM (kind of Java is Dead, Long Live Java)
(b) Learning multiple languages : I think there is one use case where architects/developers do often work with multiple languages simultaneously. A typical example is the fact that we all do use DHTML + JS + CSS + (Java / name your language). When another language does the job far better than the default one in usage, just makes sense to
— seems like my earlier comment got chopped off due to the fact that I had a less than character .. continuing from where the earlier comment left —
less than5% of total code base, only because thats what made most sense in that context) and then turned over the results to another language through an XML datastream. The question to be answered is whether the other language is supplementing the application development goal by bringing in some really strong capability. Most architects will happily learn the new language if they need to and adopt it for a small part of their architecture.
(c) For all the JVM based languages, the reason the scripting leads need to treat Java as the best friend is that they are trying to implement a slow march into a strong fiefdom called java. Their best bet in this case is to convince others that by riding on the JVM they are partners and competitors. Exceptionally unlikely you will get any ‘kill java’ from them at this stage
Isn’t Sun Anyway Killing Java with JavaFX 🙂
I think that should be the aim of the promoters of the language.
The message from the language leads should be ‘Use X language because it’s better than Java’ and not to use it if and when Java doesn’t seem appropriate.
Ability wise most scripting languages are already doing quite well, but they just don’t seem to exude the confidence to be able to get new followers.
If you look at recent successes like Spring and Rails [ https://indicthreads.com/interviews/390/ruby_on_rails_java_web_application.html ] from day 1 they were aiming to replace the incumbent.
– Harshad
How might a ‘scripting language lead’ go about ‘killing the Java language’?