The Struggle To Keep Java Relevant
snydeq writes "Fatal Exception's Neil McAllister questions Oracle's ability to revive interest in Java in the wake of Oracle VP Jeet Kaul's announcement at EclipseCon that he would 'like to see people with piercings doing Java programming.' 'If Kaul is hoping Java will once again attract youthful, cutting-edge developers, as it did when it debuted in 1995, [Kaul] may be in for a long wait,' McAllister writes. 'Java has evolved from a groundbreaking, revolutionary language platform to something closer to a modern-day version of Cobol.' And, as McAllister sees it, 'Nothing screams "get off my lawn" like a language controlled by Oracle, the world's largest enterprise software vendor. The chances that Java can attract the mohawks-and-tattoos set today seem slimmer than ever.'"
THe thing that makes me think Java has a huge path forward is groovy.
in theory groovy has all the advantage python has and more. Plus unlike python it has a path forward to a statically typed quasi compiled and generally close-to-c speed when you need it without much effort.
Some drink at the fountain of knowledge. Others just gargle.
Maybe he's barking up the wrong tree. The best young programmers I know don't have any piercings or tattoos that I can see.
I have no data to support this, but I have always thought the best of the tech crowd were too busy being into their tech to get into the body modification scene. I don't think this is different now than it was 30 years ago.
On the other hand, there's a lot I can't see (and in many cases, thank goodness!)
I agree with this. Oracle will have to do some serious sucking up to the world to convince anyone they are not out to destroy everything that MS licensing was unable to touch. I'm not saying that Oracle sucks, just that their business model is not really where the world has been migrating to lately. For more or less all the reasons that MS products are not looking so good these days to many people, Oracle products (including the products they buy) will also not look good. There is reason to think this looks like a sinking ship taking on ballast weights.... IMO
Support NYCountryLawyer RIAA vs People
Someone emulating the punk movement of 40 years ago is "cutting edge"? If that's his idea of "cutting edge, hot talent", he needs to stop thinking he's in the movie "hackers" and he's looking for Angelina Jolie. Associating dress or style with talent is stupid no matter if it's "you wear a suit, you're smart" or "you've got 3 piercings and drive a crotch rocket you're the next big thing"
Demanding innovation never works. Innovation just happens from a need, not a demand from some Oracle guy who desires it and thinks it'll be good for marketing. There are interesting things happening in Java. Scala is certainly interesting. I haven't used it myself, but I'd love to try it if I had a good project to use it in.
AccountKiller
um google app engine? spring? android? gwt? groovy?
Please it's evolving and even finding new uses.
All those "java is going to die" people are silly and not grounded in reality. Plenty of talented developers see its power and use it.
let me get this straight... Java needs tattooed programmers to be relevant? Snarky comments about Cobol aside, Java is the current programming workhorse. It provides the greatest infrastructure and options for scalability. Since when does fashion dictate what technology is best for the job?
So what do people with piercings do now?
Work at Starbucks.
piercings and mohawks somehow make someone 'cutting edge' or a better coder? i think not.
good developers will follow the jobs.
i'll save you the trip to monster.com, here are some search results from there:
search results
------ -------
java 5000+
.net 4581
c++ 3706
c# 3369
perl 2569
python 1035
ruby 547
cobol 286
- 5000 is apparently the limit for the number of results a query can provide at monster.com (weak) so there are most likely far more that 5000 java jobs in their database
- couldn't figure out how to search for C reliably, but it's probably up over 5000 as well.
Can you be specific about these inconsistencies? I'd like to hear about them.
As for "letting it die", Java is the default language of enterprise everything. Outside of the embedded world, there's probably more lines of Java currently deployed than anything else. And I have to say, Spring 3.x is actually pretty neat.
Java will remain relevant because of the large number of languages being built for the JVM: scala, erjang, clojure, groovy etc. Thus writing libraries in java has significant appeal.
JJ
like to see people with piercings doing Java programming.
The amount of drugs involved in the decision to get said piercings is not conducive to good software engineering.
The problem with Java today is... it's syntax looks too much like C. And as everybody knows, C is for geezers. Can't we write java code as follows:
<class>
<classname>MyPony</classname>
<method>Run</method>
<code>
<if><condition>IsExcited</conditon>
<if_block>walkFaster </if_block>
</if>
<method>trot</method>
<method>gallop</gallop>
.
.
etc...
Once the java manufacturing association fixes the syntax to my satisfaction, I'd give up on my 10 GL super auto functional metaprogrammers language (Saufml) and start writing java code. Until then, I'll keep working on my latest NoSql data-store for my soon to be mobile-social-media-empire (leveraging P2P crowd-sourcing) in my beloved Saufml.
Java isn't about to become irrelevant. There's no chance it's going to be the latest thing, because that opportunity only comes once. But if you want a language for doing major projects with long lifetimes, there's really Java, .NET and C++. For a lot of things, Java or .NET makes more sense, and realistically .NET limits you to Windows. For that class of things, the limiting factor in Java now is that Sun does't support the same range of APIs that MS does. Particularly desktop APIs needed for things like multimedia and games. If I wanted to make Java as useful as possible I'd put some manpower into that, and find ways to put some of the newer interpreted languages on top of the Java JVM. That would give them access to a good compiler and to the range of packages available in Java. (Despite a more limited set of APIs than .NET, there's still more than a newer language would otherwise have available.)
I make a lot of money working with Java. I have piercings. I've been known to have hair in a primary color.
Seriously though. Android applications. Eclipse. Adsense, GMail, Wave - in fact, just about every big Google web application (yes, even the client side stuff is written in Java and translated to Javascript). Openfire XMPP. Tomcat. Geronimo. ActiveMQ. Azureus.
You can badmouth Java all you want, but performance and tooling are excellent and there seems to be an infinite supply of libraries and sample code. It runs in lots of different places. There are 100% open source implementations. You can compile it to native code. You can run it in the CLR.
I know it's trendy to play with Ruby and Python, and that's fine. I'm a big fan of Scala, which runs on the JVM. I believe Twitter's backend is at least partially built on Scala. El Reg, I know, I know.
Anyone who thinks Java is fossilizing needs to give their head a shake. It's everywhere, and it's being used in very diverse ways.
If that doesn't excite this mythical "pierced programmer", then said idiot is too busy practicing the Hipster Doctrine - studied disinterest.
Does.it.allow.you.to.do.useful.things.without.typing.a.classpath.fifteen.layers.deep?
If.so.it.might.be.exactly.what.is.needed.to.make.Java.an.appealing.language.for.programmers.with.fresh.ideas. Else.it.won't.do.the.trick.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
I remember taking a long, hard look at the state of various VMs awhile back, and here's what I came up with: .NET isn't a bad design, but it's entirely controlled by Microsoft.
Rotor doesn't change that at all.
Mono changes it a little, but Mono (at least back then) wasn't really a great platform in its own right -- not enough tools, not enough reason to use it, always playing catch-up. Plus, there's the whole patent issue.
On top of all of that, it was never really designed to be cross-platform, and instead seems to be primarily aimed at creating native apps.
The various "scripting" languages have been moving towards VM architectures, and some are quite good, but none that I know of actually feature any kind of ahead-of-time compilation, even to bytecode. That includes Perl, Python, Ruby, JavaScript, and plenty of others.
Lisps are better, but they generally don't compile to an intermediate form -- if they compile at all, it's to something platform-specific, likely machine code.
Smalltalk is interesting, but is even more closed off than Java, and basically requires an entirely different set of tools for working with. It's not really designed to work as a text-based language.
The closest would seem to be Erlang, but it's radically different. While I know of at least one other language trying to target the Erlang VM, it's something that's really designed to work with Erlang. I'm also not entirely sure if the performance is there.
LLVM looks very, very good, but very few languages actually target it, beyond, say, C. It seems to be targeting runtime optimizations, not portability.
I probably looked at a few others I'm forgetting now...
Basically, the top two are still Java and .NET. Both present a VM that supports multiple real languages. In Java, this is by accident, it's hackish, but there are plenty of robust, mature languages other than Java which target it -- Scala, Groovy, Clojure, JRuby... In .NET, this is by design, but the more interesting other languages targeting it seem to be in an alpha state.
So Java is pretty much it. And it means we can take our fun, dynamic languages, and (eventually) compile them to Java bytecode, and create entirely cross-platform apps with no local dependencies other than Java. It means we get much of the work that's been put into optimizing Java for free -- for example, the Java garbage collector. It also means that even when designing a native app, well, Ruby just got threads in 1.9, and there's still a GIL, so no support for multicore. Python has and probably will always have a GIL. JRuby has had real, native Java threads almost as long as it's existed. Ruby has plenty of options for concurrency, but if you want to take advantage of multicore, your options are either JRuby or a unix fork(), and Ruby's GC is not COW-friendly, so fork() is potentially much more expensive than in other languages.
I don't know if Java is the way forward. I hope someone builds something cool on top of LLVM. I certainly hope Java the language dies. But the JVM is about the best we have in terms of open-source, cross-platform, compile-once-run-anywhere VMs.
Don't thank God, thank a doctor!
As for "letting it die", Java is the default language of enterprise everything.
He's just part of the Java backlash because it's popular. It's like the people 15 years ago saying "Let C die" because there's C++ or Java now. An essentially useless comment and nothing more than a troll.
AccountKiller
Java is described in TFA as a cutting edge language from the 90's having somewhat lost its edge since them. Java was never cutting edge. It's always been technology from the 70's - mostly a Smalltalk derivative. Java always has been about been about compromise between being more advanced than its mainstream predecessors (C, Delphi/Pascal...) and keeping accessible to the average programmer.
If anything, in the last 10 years Java has succeeded, turning from a questionable language for client-side applets to a stable and widely used environment for serious server-side apps. Unless Oracle are totally braindead they will keep it moving in the same direction, slowly moving forward and not confusing the average programmer with too much Haskell/Lisp/Perl-like complicated stuff.
You're mostly right. Back in the 90's Sun was so successful in hyping Java I remember VC's funding software companies _just_ because they were focusing on Java. Got it into a lot of (maybe all?) schools too. So damn near every young developer knows Java now and as a result that language gets chosen over others.
So yeah, letting it die might not work, we'll have to be more proactive.
Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
Java was brain-dead at birth. SmallTalk is the cleanest of object-oriented programming languages with a simple, clean syntax. A good programmer can develop an interpreter for a language using SmallTalk in a weekend. Try that in Java and your head will explode due to the inherent complexities of the language. Java, at best, is C with bytecode execution rather than native machine code.
Ok, so they want to get the love back and show that java is still relevant. Maybe they want some people to expand their skillsets and add java to their toolbox. Well I thought, lets see how heavy this thing has become. I found the necessary magic words to install it on ubuntu from apt. And then: SPLAT! Upon trying to install it, I get this very unfriendly looking licensing message during the install!
Sun is willing to let you install this under the condition that you accept the terms of this 15 PAGE! licensing agreement! In order to install, you must accept the terms, do you accept the DLJ license terms? YES or NO?
If you say NO, then the installation -crashes- and you get prompted again, in a loop asking you to accept the terms again! Ok, after 3 declines, it bails out completely.
You know what? I dont remember that kind of love when I installed PYTHON. Maybe this is what they mean by tough love.
None. Learn algorithms, data structures, and theory. You can and will change languages a half dozen or more times in your career. Theory works for everything. And the good employers know that.
I still have more fans than freaks. WTF is wrong with you people?
What they had better NOT do: treat it like Solaris. You're only allowed to use it in production if you have support, and the only support they sell is a site license which costs $25 * the number of people in your company + the number of users for your application.
I'm not being entirely silly. I have an application for which I would have been willing to pay for Java support. But the only support Sun would sell us (late 2009, when they had already started Oraclizing) was an unreasonably expensive site-wide support contract.
It's no longer language constructs, data structures, or algorithms that are cutting edge. Innovation has moved on to more fertile pastures. Yes, those who build software tools, libraries, IDEs, and compilers will continue to innovate. They have and will continue to come up with some brilliant stuff. But cutting edge developers don't pick a shop because they write in groovy or whatever the language-de-jeur is. Cutting edge developers go where they believe the next killer app is going to be born.
The best developers are multi-lingual. They don't identify with a single programming language. They're not VB developers or Java developers or even Rails developers. They can pick up any language/library/environment quickly. They don't really get off on curly braces versus colons. What feeds the best developers is the challenge of world domination through innovation.
Change the world, right?
To get buy in from the geezers, you should get in the habit of formatting your code. It makes things easier to read, and it just looks more professional. CamelCase also is helpful in improving readability, and to enforce proper code formatting you should make formatting part of the syntax.
/> />
Doesn't this look so much nicer? I almost forgot. You will need a declaration.
<?saufml version="1.0" encoding="UTF-8" ?>
<Class>
<ClassName>MyPony</ClassName>
<Method name="Run">
<Code>
<If>
<Condition>IsExcited</Condition>
<If_Block>walkFaster </If_Block>
</If>
</Code>
</Method>
<Method name="trot"
<Method name="gallop"
</Class>
This question is ask as if Java is somehow imporant in and of itself. It isnt. Neither is perl, or PHP, Phython or gasp - C++ or even C. Throw C#, F# and VB into that group as well.
These are tools. We (as in devleopers) should simply use the right tool for the job. If thats Java - then okey-dokey. If its C#, then groovy, if its C++ then thats ok to. Hey, I still use assembly language for a few things.
Do real engineering work folks! Pick the right tools for the job based on the business and technical requirements.
-Foredecker
Jibe!
So what do people with piercings do now?
Work at Starbucks.
Java engineers.
I'm a good cook. I'm a fantastic eater. - Steven Brust
As far as I know, pretty much every “enterprise” server software still in written in Java, and hence the developer base is gigantic. I mean just look at the job offers. 9 out of 10 say Java, the last time I looked.
What is he talking about?? Does he even know anything about what he is supposed to manage?
Any sufficiently advanced intelligence is indistinguishable from stupidity.
I for one would like geeks to be like the lab girl in NCIS but in fact they are not. Most "punks" in IT are just doing their programmer job to get some money at the end of the month. They do not care about advanced computer language theory.
Anyway if you're one of the few geeks with piercings and really want your language to be "cutting edge" as TFA puts it, Scala, Clojure, Groovy, SISC, you name it, are available in the Java ecosystem. I'm sure you can even find some Forth dialect if you look hard.
As for most people with piercings they'll be glad to use a language that is neither too cumbersome like C or Cobol or Pascal or VB, neither too hard to understand or organize like ML or Perl or Scheme. Java is nice for them and will stay so even now Oracle has bought Sun.
I was just by the Apple Store in Palo Alto, CA. There are people lined up for the iPad launch, some sleeping in tents. Three TV stations are covering the waiting line. Reminds me of Apple's "Lemmings' video.
Actually, the state of the art in programming languages still sucks. The mindset that "it has to be unsafe to go fast" is so deeply entrenched in the C/C++ community that fixable problems aren't fixed, and as a result, millions of programs still crash every day. The "virtual machine" thing has resulted in ".NET", a virtual machine for x86 only. The "scripting language" approach is useful, but fanatical late-binding coupled with naive interpreters makes for very slow execution, as with Python. Few mainstream languages do concurrency well; the notion that concurrency is the operating system's problem results in pain for all concerned.
Looked at that way, Java isn't bad. Memory safety is good. There are efficient compilers. There's some language support for concurrency. It's not too weird, and not too theoretical. Java is mediocre, but better than most of the alternatives when you need to get large amounts of work done.
Java attracted the young developers because more experienced ones had already watched the "new next thing" come and go too many times to be blinded by the hype. Many of them realized that the whole bytecode, write once run anywhere was done in 1969 (p-code) and that if those hyping Java didn't know that, they didn't have enough experience to know if it was good or not. If they did know that then they were liars. Of course, the p-code interpreter fit on a single sided floppy with room to spare and ran acceptably on a 6502....
It is amazing to me the way the hype machine strapped JATOs on that pig and sorta made it fly, but that can only last so long.
Now with Java in the clutches of the enterprise people who are the leading source of anti-cool, it doesn't stand a chance.
Why is noone asking to examine the C programming language, to adapt it to modern programming processes and methods? Why is noone speaking out to defend C as a useful language, to update the aged methods of Kernighan and Ritchie?
Oh, wait. Never mind. That was a stupid question.
Help stamp out iliturcy.
I would say that the future popularity of the JVM is pretty secure with groovy, jruby, scala and the myriad of other languages that are now available on the JVM, see wikipedia List_of_JVM_languages.
There is a huge advantage to java programmers by staying within the familiar JVM world when changing a language rather than jumping to a completely new and foreign environment - familiar stacktraces, reusable libraries etc.
The "primary" language on the JVM - java will inevitably evolve slower (JCP = design by committee) and will therefore struggle to remain at the cutting edge.
RTFM is not a radio station.
I went from Smalltalk to Java in 1996 and didn't like its implementation. In Smalltalk, EVERYTHING inherited from TOFU (Top OF Universe). Not so in Java. Haven't done it for some years, but I thought it wasn't very elegant.
The enterprise sector is spectacular at painting itself into corners. Java isn't the first instance of that, and it certainly won't be the last. So yeah, Java isn't going anywhere as far as enterprise is concerned. But neither is Cobol or Fortran or many other moribund technologies.
The rest of us can sensibly let all of that die.
As for inconsistencies, how many mutually incompatible versions of Java are there? How many revamps compared to languages stewarded by standardization bodies or other neutral actors? (C has, what, 3 over it's 40 years of history?)
I'd say that the best thing Oracle could do for Java would be to give it to ISO, but I think it's 10 years too late. I'd love to be surprised, though.
I believe what would be significant is to improve the JVM bytecode, to add some additional instructions. Tail-recursive calls is an example. There are some others. If the JVM specification was improved (and implemented by Oracle & other major JVM sources), several new languages (or language feature) could flourish. And the important part is not the Java language; it is the JVM. Better languages (Clojure, Scala) can be implemented for the JVM, and if the JVM was improved, even better languages could be experimented, all able to use the legacy of Java. Regards.
And you are aware most job offerings tend to take the kitchensink approach? "Lets include every word we ever read and then demand 4 years experience with it. iPAd, senior engineer!".
Also (java) matches javascript.
I know you are blowing smoke because PHP is not listed. Oversight or some other reason?
Oh and wouldn't your query also match "Need highly skilled X developer who knows enough Java to migrate us away from the steaming pile of crap?".
Or indicate that there are no good Java developers to be found?
What about companies that offer you a nice cup of java every morning?
I know that a job count for PHP has to discount those companies with .php in their url.
In fact, does posting a few queries to Monsterboard not tell you anything more then that you have to much time on your hand?
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
Congratulations, you reinvented ColdFusion.
Table-ized A.I.
It's all about Balls - risk taking, competition, innovation.
The computer is a new and novel device. It is probably more important than the wheel, perhaps less important than fire (with all the chat about cooking being a primary driver for evolutionary change in humans). Your view of the correct set up and instruction set for computing may be correct, but surely you would be the first to admit that if it is then you have been strikingly prescient. In my view the use cases for computers are far from decided, and while it is true that complete equivalence of all Turing complete instruction sets would enable any language to be used to do what any other language does I think that we want tools that are convenient and efficient for a particular task.
So, 70, 80, 100 years of diversity and then convergence; at least! The more that the energy of change is put into the system the more diversity in the ecosystem. Eventually it will settle down and a standard set of tools will emerge, but not yet.
--------------------------------------------- "In the end, we're all just water and old stars."
Guido says you don't need it! (/me ducks)
Erlang programmers might disagree ;-)
you had me at #!
The One True Instruction Set was the PDP-11's.
la-la-la-la-la-la-la...
you had me at #!
Never mind the people. I just want to see those piercings doing Java programming.
Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
'Java has evolved from a groundbreaking, revolutionary language platform to something closer to a modern-day version of Cobol'
So Java has gone from immature, constantly changing and buggy to stable, reliable and fast? I can see how that would be a problem for somebody that wants to attract unexperienced scriptkiddies to a programming language.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
Java has evolved from a groundbreaking, revolutionary language platform to something closer to a modern-day version of Cobol.
The whole reason why Java enjoys the widespread popularity that it has is precisely because of that. Most projects aren't made by "trendy" guys in a basement somewhere - they're made by corporations, most of them not exactly small, who value predictability and the peace of mind that comes with it over new & trendy.
The advantage of Java there is that it is a well-known quantity, and it has been in that state for a while, with few changes. There are many development tools, all top-notch, with code editing features unmatched by IDEs for any other language. There is a huge amount of useful code in third-party libraries, most of them under liberal (free, non-copyleft) licenses. There is a large workpool, and it's going to remain that way for some time to go.
There's nothing wrong with that. It's a niche that has to be filled, and Java is doing remarkably well in doing so. Don't fix what's not broken.
And in the meantime, the trendy guys always have Groovy, Scala etc to play with.
Java (specifically J2EE with an Oracle or similar database back-end) seems to be second only to .NET/ASP.NET/C#/VB.NET with SQL Server in terms of jobs I see when I look on the job sites here in Australia.
Plus Java is still the #1 mobile language. Not just on Android but on the 1000s of feature phones out there running various incompatible versions of J2ME for applications (I have owned 3 feature phones, all of which have supported Java apps in some form)
Java on the desktop is dead (if it was ever anything but stillborn in the first place). Java for client side web development died and got replaced with ActiveX, Flash and other technologies.
But Java in the enterprise and mobile spaces is far from dead.
If anything, Oracle should be pushing J2EE even harder (Oracle is the dominant choice of database to use alongside J2EE)
My University only has two programming courses: C++ and Java
That's terrible. No Prolog? No Lisp? No functional programming language at all? No assembly, for that matter? And what about parallel programming languages? I must have learned about a dozen languages at my university (not all of them very thoroughly, mind you).
"It was never groundbreaking and revolutionary."
Of course not, it was not because it was explicitly designed not to be all that. It was supposed to be a small well defined language that brought good OO practices and GC to the mass market of C/C++ programmers - hence it syntax. For this to happen, it needed also to be relatively fast during execution.
As for all the politics, I am highly surprised by the way you think the market moves. The development market moves because it sees something useful. After that it looks at the license yes, and Java never had much to scare away developers except hard core purists (read: the linux crowd - and they certainly had good reasons for shunning it).
"But betting on Sun was the wrong move: Sun screwed up the language, screwed up the toolkits, screwed up the implementations, and made Java one of the most proprietary languages in existence.
In the end, all Sun managed to produce was the only thing they have ever been able to produce: bloated server side software.
Good riddance, Sun, you won't be missed."
Now that's just trolling. I'm very surprised that you get modded up when that kind of junk is in your post.
Who cares if Java is cool or not? It's getting a lot of actual work done. In fact, there's a crap load more stuff getting done in Java than Ruby or 'The Cloud' or whatever is supposed to be cool these days. In the end, 'coolness' has absolutely no engineering benefits whatsoever.
The fact that Java has lasted as long as it has and is as prevalent as it is now is testament to its ability to GetShitDone(tm). ...along with a lot of other useful languages which are useful regardless of whether some hack or slashdot group-think thinks it's trendy or not.
Java is not and never has been groundbreaking and revolutionary. All the features people used to tout about Java back in the day were things that existed before it. A lot of smart people have poured a lot of effort in research related to Java, and the platform has grown stronger as a result, but even most of that seems to be just re-implementing existing ideas for Java.
However, that by no means implies that Java isn't relevant. It has certainly taken the software world by storm, and, as far as I can see, Java is still going strong. People are taking Java courses left and right, either to learn it for the first time or to deepen their understanding. There are so many Java projects that it's hard to find something for those in our company who would prefer to use something else. Even with .NET being backed by a company whose products usually get adopted as a matter of course, I don't see nearly as much demand for .NET knowledge as for Java. Java irrelevant? It sure doesn't seem that way to me.
Please correct me if I got my facts wrong.