Imagine a bacon-wrapped Ferrari. Still not better than our free technical reports.

Java is dead? 9 million devs disagree

Java is not dead…in fact, it’s got more than enough energy to kick your app in the butt. Too often, critics focus on niche issues and make unfair comparisons to other technologies or languages that do not have the same level of widespread use, applicability or history as Java. It’s like comparing a car to a carpet.

Children today are able to learn Java. It’s widely adopted among Web and Enterprise App producers. It has seen some amazing improvements in recent years and even more good stuff is on the way. But even excluding those latest additions, Java is still pretty darn cool: consider the widespread applicability and excellent engineering behind the JVM platform, the clarity of syntax, the rich ecosystem of tools and libraries and the fact that Oracle says there are over 9 million Java developers out there (and many billions of app/device users). So why do I hear remarks about Java being “on its way out” or, since back in 2007, that it is becoming “the Cobol of the 21st century”?

The Java platform is an engineer’s dream

First there’s the Java platform. The HotSpot JVM is a marvelous piece of engineering. It does stuff the CLR can only dream of and is so heavily optimized that often Java apps can even match the performance of C programs. Also, there is quite a selection of other virtual machines available (such as JRockit, Zing), should your environment have some specialized requirements.

Secondly there’s a multitude of JVM-based languages, which makes the platform even more amazing. It goes way beyond the famous ones like Groovy, Jython, JavaFX and Scala. Java now includes such treats like invokedynamic opcode and the java.lang.invoke package, making it easier to build dynamic languages for the JVM. There’s already a line up of over 50 JVM-based languages, one of the most interesting ones being php.reboot, which aims to keep the philosophy of PHP but remove its shortcomings. And it also works for Android, too.

Java is mature, but not a language for old people

Java as a language has been the target of much criticism, whining and cursing. I say the language is not dying or Cobol’ish either, quite the contrary. When complaining about Java and recommending better alternatives, people often use strange comparisons. Some people seem to think that Java is still in version 1.4, written in Notepad and requires EJB2 to write a simple guestbook. It is then compared to a high level framework or even a CMS!

As a Java developer, this comparison doesn’t make any sense to me. It is wiser to compare how Java measures up to more intelligently-chosen contestants…How about pure Java vs pure PHP, Python or Ruby? Or comparing the Play! Framework vs Ruby on Rails? Or Spring MVC vs Zend Framework? When put in this light, I feel that Java does not seem like a “language for old people” anymore.

Java is verbose? Of course it is!

People say Java is so verbose, and it slows them down. Critics often refer to the strong static typing and lack of bleeding-edge features in the language. However, I believe this is actually deliberate and a good feature of Java.

Dynamic languages are popular when starting a new small project, but consider this – with the help of modern frameworks and proper tools (i.e. consider using an IDE instead of Notepad), creating a “Hello Guestbook” type of application in Java is a simple, 10-minute affair.

If you want to test that, try Spring Roo and use a stopwatch if needed. Now, let’s take a step outside the trivial CRUD matrix used by cool languages and frameworks in their marketing talk.

Imagine you’re building a system for a mobile carrier and want to allow clients to sign up on their website. You will have to collect a lot of data and possibly invoke various subsystems in the backend. Cool frameworks often break down the minute your program model does not match the user model anymore. For more, I can recommend this wonderful post on that topic by Joel Spolsky.

Java is strong with static typing

Strong static typing has many benefits. I love its simple visual appearance. I can glance at a piece of code and usually figure out immediately what’s going on. It’s like the visual feedback in English – the lgnaugae is so esay to raed taht the lettres can be miexd up isinde wrods, and it’s sitll redaalbe.

Some other benefits of the type system include strong IDE support. Dynamic languages will always be at a disadvantage here. Having a simple, no-nonsense language in a huge project with great IDE and tooling support is priceless. Nothing else comes even close IMHO.

Critics have a point that Java may lack some of the expressiveness when reading a file, transforming xml or iterating through a collection, but you can always create a sub method to handle common cases, or use FileUtils.readLines(). There is also a huge number of libraries available for Java that handle most of the “expressiveness shortcomings” of the language.

Java 7 saw some neat enhancements such as auto-closable resources, String support in switch statements and underscores in numeric literals (I urge you to read up on project Coin). Java 8 promises even more (most interesting part being closures).

The takeaway here is that the language is getting some fresh blood. However, the features will not be some experimental ideas which may or may not be around in two years, but proven and mature concepts. This does not mean the philosophy is mutually exclusive with having fun when programming. It isn’t.

A Fanboy Rests His Case

Is everything about pure Java perfect and justifiable? Of course not. And that is why there is Java 8 in the works. And Java 9. What I personally dislike most about Java is the not-so-smooth core API, and there is a debate whether this has actually more to do with the platform than the language. The core contains the evolution of API design spanning two decades, and modernizing it all will break backwards compatibility. Some parts are too abstract, some not abstract enough. Some bits are too fragmented. Some are just plain weird. Looking at the competition, the core API could do well with the unified communications API like .NET for example. Java 8, with the help of project Jigsaw, may change that.

So there you have it. Pure Java, used properly, is an awesome language. Even more so than Klingon. It will continue to improve and will not go away anytime soon. The effort should not be on replacing pure Java, but using it together with other JVM languages where it makes sense. But for my next Pet Clinic, I’ll stick with Java.

***

P.S… An Example of Java in Use

This article, like Java, is a bit verbose, so I’ll leave this example for any readers who want to continue.

Say you need to build a web application and you need control over the html output or http requests. Consider the stack of pure Java, Spring MVC and Hibernate. Yes, it’s an old combination, almost like a cliche, but it works beautifully. It has many benefits and little downsides, most of which can be eliminated with a little help from your tools.

Writing Java code is fast when using a modern IDE (Eclipse, Netbeans, IntelliJ). All of them have code completion and shortcuts that take much verbosity-related angst out of your day. Using relatively modern (i.e. less than 3 years old), versions of Spring and Hibernate, you don’t need to write five miles of xml to have red buttons with rounded corners (it has never been that bad but people love exaggerating). You can use annotations most of the time. Even when you need applicationContext.xml, using a Spring IDE plugin makes that a breeze. With JEE 6, you don’t even need a web.xml. Even if you have to use an older servlet spec, IDE will generate web.xml for you. It can generate a project layout and add servlets just like Grails’s command line console, but better.

The last bit you might complain about is the turnaround. Making a small change and seeing the result has always been fast in PHP, but not so much in Java. Again, tools are there to help you. Without tooting our own horn, JRebel, for example, will instantly reload classes in the running application regardless of your stack. Same goes for refreshing Spring and Hibernate configuration. It goes even further by mapping resources between the workspace and the deployed application. This makes your life easier when working with static resources too – you don’t need to copy jsp’s to the right place or run any build script to see the changes. Just press ctrl-s.

You get to keep all that’s good about Java. In short – you’ll have the best of both worlds.

  • Hi Arnel,

    There is a word that was only mentioned once in your post above, and that was key to reviving Java, which is Android. If you want to develop in Android, you need to learn Java, as Java is Android.

    Every developer worth his salt knows that the future is smartphones and tablets, and so everyone is trying to learn Java to develop with Android.

  • I think you can learn programming for android without learning the most of the java it self :)

  • I’m a .NET (C# and VB.NET) guy doing more and more Java stuff on my down time.  I simply agree with everything said here and I’ll leave it at that.  When the dust settles, Java isn’t going anywhere.

  • The old Java is as fast as C myth: Yeah in micro-tests you might reach that speed, but once you factor in realtime application concerns (GCing), a bunch of shoddy written stdlib and framework code etc, that has all but vanished. Heck, I can write Javascript or Ruby code that’s nearly as fast as C, doesn’t mean they’re actually as fast as C.

    The old Java is portable myth: Ask anyone who’s ever written vanilly jdk java, J2ME and Android java how portable their code is (even among android devices) and you’ll find out that the theoretical portability is worth zilch/nill/null/nada because you’re targeting a bazillion of slightly different but same looking APIs that break everytime you plugged the gaping hole for one device/driver/platform.

    The old Java is modern myth: Java doesn’t have proper closure, anonymous blocks, co-routines/continuations, iterators/generators, first class types, and the list goes on and on.

    The old Java is popular myth: once something’s gotten a sufficiently large userbase, it’ll hang around pretty much forever with a substantial amount of users. Even Cobol has a substantial amount of users still, doesn’t mean it’s popular. Same has been said about C++ etc. Just because there are still people to pat themselves on the collective back doesn’t mean anything.

    The old Java is pleasant myth: no. seriously, really? no. You probably haven’t used any other language if you can even say that.

    The old Java has great libraries myth: Yeah, for each task it has about a dozen buildin libraries, all about 80% complete, and about two-dozen other libraries you can download somewhere, mostly about 20% complete. “Java: There should be as many broken ways to do the same thing as possible.”

  • Very well said. There is one area that Java has been left out of, and that is mobile.  If not for the advent of Android, Java for mobile would still be taboo (lets not mention J2ME).  What about iOS, though?  iOS has a huge junk of the market, and it spits in the face of Java developers who don’t care to pick up Objective-C.

    Enter Emitrom.  The “GWT4” team is making use of GWT like MacGyver used his Swiss Army knife.  With the GWT compiler we allow Java developers to write in our beloved Java, and out comes [Javascript] that can be interpreted by any webkit-based device.  If we want access to the hardware, we can do that with integration with PhoneGap, again, all in Java.

    In light of not turning this post into a shameless plug, my point is to extrapolate the idea that Java is here to stay, and it has the ability to touch every area one could possible desire to address: back-end, front-end, web, and now cross-platform mobile.

  • Java doesn’t have to be modern. It will get some fancy stuff eventually, but even then it won’t be as modern as the other not-so-popular languages 

  • Mateo Bengualid

    The C/JVM speed debate is sadly unscientific and therefore useless. I’d really like to see a paper on this subject, though. My thesis: it’s so easy to screw up memory management with C that perhaps using a GC actually improves performance.

    I’d like to see a paper about portability, but since I don’t have any, I’ll talk about my personal experience. I’ve done plenty of J2SE applications for Linux and Windows, for different versions of the JVM, and even different manufacturers (at least IBM and Oracle VMs). I’ve also done migrations from J2ME to Android. From my own experience, the only place where portability breaks down consistently is in the UI. Migrating to Android is easy, even if they have different storage models, for everything *except* the UI. But this is nothing new, because every multi-platform environment with a visual library (let’s say Python+GTK) has the same problems. So yeah, it’s as WORA as experience has shown is possible. Compare this with C and C++, which have huge portability issues: Mozilla has a nice page about this.

    The part about modernity really shows how you don’t have a clue, because from this point onwards you mix up the language with the platform, but I’ll ignore that. Yeah, the Java language doesn’t have “proper” anything, but what did you expect? It’s neither a dynamic language, nor a functional one. Why should the syntax allow closures? It doesn’t have “proper” anonymous blocks for the same reasons, although it provides a static mechanism with anonymous classes. Iterators are hardwired into the Java language since 1.5 though, and generators are harder to implement, but not impossible (use Jython if you want those features ingrained in your syntax as badly). Finally… Scheme has provided continuations for over 15 years: hardly new. And first-class types… what the hell are you talking about? Java 1.0 had those: they are called classes. Scala has different first-class types, so has Jython. Deal with it.

    Regarding popularity, I lack numbers. But so do you: you only made a general statement that didn’t supported nor denied the “myth”.

    About pleasantness: it really lies in the eyes of the beholder. I hate CamelCase, therefore C#, but that’s just me; I love Python’s simplicity in variable declaration. But since syntax pleasantness is marred by APIs, I hate Python for its low level I/O routines and the mess the Python Foundation did with cryptography libraries, while the opposite is true for Java. It really depends on your problem and circumstance.

    Finally, a note about libraries (Java platform again, jay!). Sadly, your comment is valid for any platform. That’s why Haskell has Snap, Python has Django and M2Crypto, .Net has NHibernate, and so on. In the case of Java, I’ve rarely needed third-party libraries. If I do need them, they are always provided by: (a) the Apache Foundation, (b) the JVM manufacturer, e.g. Oracle or IBM, or (c) providers from widely used libraries, like SpringSource.

  • Alex

    “lack of bleeding-edge features in the language”

    Or lack of 1970’s features in the language.  When do you think we are going to get some of those?

    “Cool frameworks often break down the minute your program model does not match the user model anymore. For more, I can recommend this wonderful post on that topic by Joel Spolsky”

    Joel doesn’t use the word “framework” once in that article.  It’s an article about user-interface design.

    “strong IDE support. Dynamic languages will always be at a disadvantage here. Having a simple, no-nonsense language in a huge project with great IDE and tooling support is priceless. Nothing else comes even close IMHO.”

    Most of these features of your IDE came from 1980’s Smalltalk IDEs, a dynamically-typed language.

    “There is also a huge number of libraries available for Java that handle most of the “expressiveness shortcomings” of the language.”

    I’m curious to hear what they are.  I would have thought that any “expressiveness shortcomings” of the language would be syntactic issues, and thus, lacking any means of syntactic abstraction, a Java library could not help at all here (besides, say, providing an interpreter or compiler for a completely different language, like Clojure does).

    “Pure Java, used properly, is an awesome language.”

    So Java has some flaws but there are libraries to deal with that, but it’s only awesome if you don’t use any extra stuff?  I don’t quite understand this.  What language, exactly, are you comparing it to?  You mention Python and Ruby earlier, but I haven’t heard you say anything about Java that is better than them, apart from your mistaken ideas about IDEs.

  • Yes. If you don’t care what your code looks like afterwards.

  • Those who disagree probably didn’t do much Java or did some Java in college… :) 

  • Speed:  I’ve written OpenGL game code in C++ and Java.  The speed is equivalent.  Speed testing various systems implemented in both languages has (since Java 1.5 shown Java to be 80-105% the speed of C++.  Only in some heavy memory allocation tests did I find c++ to have any real advantage – and 1.5 was, what? 5 years ago?  Java is faster since)

    Portable:  I’ve written Java code for Windows and Unix machines on a Linux box.  Ported perfectly.  I’ve written Java code with 3D graphics and low level hardware interaction on a Windows box for a Mac and it work perfectly.  First time.

    Modern: Closures and your other wish-list items don’t constitute “modern” (unless Lisp is modern???)  These features are language choices and just because Java chose not to use those features is not a sign of AGE it’s a sign of DESIGN decisions. You may choose to disagree with those design decisions but characterising those as constituting “modernity” is factually incorrect and pure sophistry.Popular / Pleasant: The author loves Java.  I love Java.  I have developer friends who love love Java.  Again, if you don’t that’s fine, but don’t speak for the rest of us please.”The old Java is pleasant myth: no. seriously, really? no. You probably haven’t used any other language if you can even say that.”  And here we see the typical arrogance of the programming language hipster.  I’ve been coding for three decades.  I’ve used everything from machine code, C and C++ through to Python, Ruby and Lisp.  And I LOVE Java (I also love C and Lisp).  I am SICK TO DEATH of arrogant jerks who assume that the only reason that anyone would like Java is because they’re some programming newb who has no other experience.

  • ” I’m curious to hear what they are. ”
    How about Guava collections library? Or Mokito, or LambdaJ? Those libraries are awesome and really help a lot inferring some eye-candy to the code also.

    I don’t think the author actually compares Java to any language. It is just the fact that Java is a fine language to program with and a freakin’ awesome platform/ecosystem for the community.

  • What do i think is java is becoming stronger than ever. I’m a javafx and java developer. I’ve been always using Java and only Java after taking taste from C, ActionScript . The difference I found in Java was it’s more portable than any other langauge. And I feel easy to code in Java as it has good programming features. Day by day it’s increasing it’s users and it’s usage. Today most of the smart devices are all running with Java including Android. After involvement of Oracle in Java I found some progress on GUI and deployment performance. Even twitter is using Java for their searching stream . Java is super fast in comparison to others while doing big stuffs

  • Andrea Del Bene

    I’m happy when someone says “Java is dead”. Java “is dying” (and is  “doomed”) since 1997, but it still rules software industry.

  • There are posts on the web claiming Java is dead every years since it was released.  So many that you can graph the numbers associated with each year.   What I found is that many of the posting are of the form; Java is Dead, Use My Preferred Language instead,

  • Java is neither dead nor will it be in the next 10 years. According to tiobe and joinvision there simply is no successor on the horizon. See my analyses on http://bit.ly/zWZ5ji (in German)

  • Bobsmith

    Oh, how I tired of arrogant people who think they are so much smarter than everyone else.

  • Dave Stengel

    Wow .. Florian, you really are quite the douchebag.

  • Which pretty much applies to much of the in-Java crowd singing “la-la-la I can’t hear you” over their wonderful enterprisey import java.lang.foo.bar.enterprise.ncc.1701.d.factory.multimanty.factory.manyways.are.we.there.yet.libraries and all the horrible, horrible gunk you eloquently call “programming” despite that you pretty much have no clue how that looks like if it hit you over the head with a rock.

  • Ramy

    oh you’re a funny douchebag

  • Mikhail

    Java is not dead now like COBOL was not dead 30 years ago. I have done a lot of Java programming but these days I prefer C# – “proper” generics , WPF, Linq, Rx, await/async, all features Java developers could only dream about. Only doing C# you notice that Java is like a woman in the fifties – reliable but not exciting at all… Sorry guys.

  • Anonymous

    coming from a person who relies one java for their income i am simply not surprised.

    there will always be java programmers just like there will always be delphi and pascal programmers.

  • Sharath Naik

    JAVA is dead.. Long live the ????? I am sorry but when u declare something dead aren’t you supposed to state the alternative? This is a pointless discussion if an alternative is not stated. I can make a statement too here it goes”smart phones are so yesterday, they are practically dead”, you see I look like a fool to myself.

  • Well C is enjoying some renewed popularity despite having been officially declared dead about once every decade since its inception somewhen in the stoneage.

    A flurry of funny languages like ObjC (which is actually despite the name, just a kind of lisp with pointers and square brackets) is mighty popular these days.

    Of course there’s the Javascript side of things, which is quite messy, but gets made funnier by things like Coffeescript, which depending on which coolaid you drink is the greatest thing since sliced bread, or the incarnation of the deveil (I think it’s cool). Ohyeah, it’s also the only remaining “write once, run everywhere” language that actually runs on your desktop, so that’s a plus.

    Dart, for what it’s worth, may (or may not) turn out to be a lot of balloney, or the second coming. Who knows, at least it has classes (but so has Coffeescript), but it also really has operator overloading and setter/getter properties on your own stuff (which Coffeescript hasn’t).

    If you’re asking yourself “Well, when java is dead, what replaced it?” the answers’s pretty simple. Nothing replaced java, it just never was everywhere to begin with (and it still isn’t), and the few places it has been first (like applets) are long no more and ursurped by a variety of other stuff. Java never held a candle up to PHP (in terms of popularity), and the enterprisey programmers are apparently shuffling back to Cobol.

  • I started programming in Java, day one it came out.  I’v e been programming in it ever since.  I’ve programmed in a lot of languages, from shell scripts, perl, python, ruby, c, c++, what am I forgetting?

    Now I’m doing everything in my power not to program in Java.  I’m trying to move to Clojure, but often find myself working in Ruby.  I work with a lot of other programmers.  Yes, Java is probably better on big projects than C++, but its too easy to write crap in Java.  Like total nonsense, spaghetti code, that just goes on and on and on forever and is completely un-testable.  To me this is the alpha and omega.  This is the problem with imperative languages: fortran -> c -> c++ -> java.

    I used to be a java fanboy, because I was forced to use something even worse for a time in my career.  Now that I have the luxury to pick which language our team is going to write in, I’m running for the hills from Java.

    Try this.  Try to write some stuff in Ruby, then you can use Jruby to run it on the JVM.  You can hide this from your management.  Just try it.  I think you’ll then begin to understand what it is about Java, that us Java refugees are talking about.  If you don’t like it, you can always come back, and you’ll have added a tool to your toolbox.

  • Jamestthomas

    Do something productive instead of being a java basher.  I’m sure you are most capable.  The Holy Wars are the pitfalls for many otherwise talented people.

  • Jamestthomas

    I hate to tell this self proclaimed expert that Java is widely used in the company I currently consult for and I have not been out of work as a Java programmer a single day since 1998.

  • I hate to tell this self proclaimed self proclamator that that in 15 years working in the IT industry I never had trouble finding work not involving Java. And the few times that I did accept such work (on some insane impulse thought of “how bad can it be?”) I sorely, sorely regretted that decision.

  • James T Thomas

    I have worked for companies that write Java Code using Eclipse on a PC.  We test it then port it over to UNIX servers, or Linux etc….  We have the site running on windows and UNIX servers with classes compiled on Windows.  Java is portable.  Is it verbose – yes.  Lots of libraries … yes.  Perfect….no.  I do not claim it to be perfect by any means.  It is a tool that works and has been adapted widely.  You can write elegant Java as well as spaghetti code.  Ulitimately it is how the tool is used.  A language will not create good programmers.  Study, practice, and keeping up with technology as much as one can increases a programmers abilities.  I disagree with the intent and content of Mr. Bosch’s ‘expose’.

  • I disagree with the intent and content of Mr James T (Tiberius, Thomas, Tomatoe?) Thomas ‘expose’.

    I’ve worked for companies that used Java and Eclipse and I found that it usually was a clusterfuck, and that if you took away a Java programmers Eclipse, said programmer just became an inert hunk of protein without any productivity whatsoever (although even with Eclipse some programmers, especially Java programmers tend to be active hunks of protein with a negative productivity quotient).

  • Saxo

    I think java will gain even more momentum with JDK8 when Java will also support closures. Will take quite a while till the average Joe java developer will grasp the power and ease of using closures. But then the masses will somewhen understand closures and like them as all those people did doing Smalltalk, Ruby, Groovy, Scala, etc.

  • James T Thomas

    What a negative reply, off point, insulting, inaccurate, and rediculous.

  • James T Thomas

    There is no la la la going on except in your head

  • James T Thomas

    I didn’t come on here self proclaiming anything.  I answered your proclamations with facts.  Sorry that doesn’t work for you.

  • Actually it’s pretty accurate, or do you profess to have been along whereever I went and saw one clusterfuck after another to do with Java? Seriously, because I haven’t seen you peeking over my shoulder, so that kinda creeps me out.

  • James T Thomas

    There are always ‘Know it all’ programmers.  I hope for everyone here you do not have to work for a Crusader with a bug up their a…  It will diminish your growth, take much joy out of the work, hurt teams and the ability to work together.  I work with people who respect and learn from each other.  It is the best job I have had in years.  I have suffered working with fat heads and I am particularly opposed to the “shock’ statements that come from MT. Olympus.  What is dead or should be dead is the fat head know it all in an industry where no one knows it all.

  • Vistacalifornia2000

    Please do not use profanity Mr. Florian Bo..sch.

  • And I reproclaimed your proclamations right back with facts, sorry you feel thats not working for me, but I assure you, it’s not working for you.

  • Anonymous

    Java will never die.  For other programming language, they are really excited about new features on next major version.  Like PHP3 to PHP4.  For Java, most of us don’t care as much after Java 5.  What I’m saying is that Java isn’t just Java.  I look at it as a massive third party code that works on Java.  Anything I can think of is already done by millions of people and often offer multiple solutions to solve a problem.  It gives you CHOICES where other new and hip languages lack.  I’m not saying those languages are bad or not fit for business but code quality comes from a programmer and not what programming language he uses.  For me, I’ll stick w/ Java for long time~~ Not because it’s OO or other marketing stuff.  It’s for all open source that runs ONLY w/ Java. 

  • Java is a fine language. It works great for certain applications. The bad rap it’s got is mainly because a few years back it was pushed as the language that will solve all problems. It was pushed to be the language of the web for both front end and back end. There is little doubt that it failed at that.
    However, Java is great for creating custom server apps as well as tools. 

    I can’t help to notice the overhead of some java apps that creates overbearing lag. Think netbeans or aptana. Compare these two tools to XCode. There is no question on the responsiveness of both tools. XCode wins many times over on responsiveness and memory footprint.

    Again, Java is great but there is an unnoticed killer called ObjectiveC + ARC that will make java disappear for all new apps

  • I don’t think anybody believes Java is dead on the server side. IBM alone has seen to it’s survival there if nothing else. But on the client side it’s dead as the proverbial horse, other than for trojanware. There’s absolutely no downside to someone who isn’t aware of using Java applications to removing Java. Just look at the website landscape – hosts learned long ago to abandon Java applets. Also, I agree with Florian on most counts below – “write once run anywhere” was exposed as a lie back in the very early 00’s, and as far as any speed gains for Java, those have been completely counterbalanced by horrible development paradigms that came out of Java’s adoption by academia.

  • ying

     C# is so wonderful that it copied concept from java.
    WPF, Linq are so wonderful that M$ has decided to kill them in favor of HTML5.
    Fact speak for itself.
    Context, people, Context.

  • ying

     30 years in the making and still so small user base. Maybe you can study how Apple gets so successful.

  • ying

     Excuse me, but your blaming spaghetti code on programming language just show me how little you think at language level. Program is only as good as the programmer.  Sr guy knows when to use which language.

  • aegisisclinks

    I don’t think Java/J2ME is a failure in the mobile space at all. I don’t see any other format in which applications are prevalent across brands, models and operating environments. Of course it can be argued that there’s not much to earn in mobile apps since most of them are free and they in turn drive down the profit margin for those apps that are actually retailed! But then that’s true for any platform for mobile apps, not just Java. For More Java Developers

  • Thomas G. Marshall

    I’m sorry, but yes, Java is slated for irrelevancy.

    I’ll be sorry to see it go; I’ve been a java engineer since the hokey alpha rev, (back when things were pre 1.0 and really really rotten :) ), and no one, NO one has been a bigger proponent of Java than I.

    But when even ****I**** am forced to admit that Java is gone, things are pretty bad. Look at all the arguments to the contrary—-they’re emotionally charged, defensive, and wishful thinking.

    Guys, I truly truly truly wish this were not the case. I loathe C++. I shudder at C#’s operator overloading. But just look around, and you’ll see: you have to DIG UP java uses these days outside of Android apps. Such wishful thinking arguments like this article are sad—-the leaps taken here are difficult to watch.

  • JarJar

    Coming from a reverse-engineering doing a lot of network related C# programming, python programming, and using C++ for injected libraries. The first time I fired up Spring and took a stab at Tomcat, hibernate, and Java was a complete mess. I spent my day tracking down missing libraries and dependencies, or dealing with code that was depreciated and would not work anymore as every new release seemed to break the old one.

    Second the SpringIDE is complete SHT compared to VS or even your vi. I takes more time to add a project and files than I would doing it without the IDE. Do I need to mention that the damn IDE takes so many resources I cannot even run it in a VM without having 5 second delays every click. VERY VERY poorly designed. Not to mention the JAVA highlighting is more cryptic then assembly language, at least with VS you can quickly have a normal find command, and quickly find references with a rightclick. And WTF is with not being able to set break-points. Do JAVA developers really spend 4 hours pressing restart>run for every 4 hours of code they produce? The SpringIDE just makes debugging a nightmarish waste of time. Truly not an “Agile” (WTF does that even mean?) approach to programming.

  • JarJar

    And about speed. Every language is fast depending how you code it. And obviously if 2 languages are coded 100% optimized, the one that does not use an interpreter would be fastest. So there is no way Java or C# can be faster than C++ if both code is 100% optimized.

    P.S If anyone can disprove what I said below about developing using Eclipse related IDE’s I would be very happy.

  • arhan

    100% optimization is a bit foggy target :) Java’s benefit is that JVM can dynamically optimize and de-optimize the code while C# JIT does it upfront as well as any C++ compiler. Sure, it might sound a bit like utopia, but you can’t really tell that it isn’t true :)

  • arhan

    >>> I spent my day tracking down missing libraries and dependencies,”

    For this, you should blame the one who created this mess. It is possible to create this kind of shit just with any other technology out there. For you, it just happened to be Spring/Tomcat/Hibernate. Bad luck.

    SpringIDE is actually Eclipse. It is a bit holywarish topic actually. Even between Java programmers there’s a 100-years-old disagreement on what IDE is better, NetBeans, Eclipse or IntelliJ.

    If you didn’t like Eclipse based distribution (like SpringIDE), give IntelliJ a try. Same company creates ReSharper plugin for VS, so if you used that, it might seem a bit familiar to you.

    On the WTF facts you gave – most likely the answer is that you’re just doing it wrong – you should study the tool first.

    >>> Do JAVA developers really spend 4 hours pressing restart>run for every 4 hours of code they produce?

    Some stupid (or lazy?) onces do :)

  • arhan

    >> Java is gone

    hardly. Java sits so deep in the financial sector, banking, insurance and all other conservative industries that are called e.n.t.e.r.p.r.i.s.e, so it will take another 10 years and another 20 years to wipe it all out even if someone really really wanted to do that.

  • slaith

    Seriously, Java doesn’t even have function pointers. Its ridiculously hard to arrange your code especially if you use the GUI. I mean J2EE is okay, barely survivable but event driven programming can be a pain since you have to declare a new interface left right and center when passing the function name should be enough. Start working in VB and you will feel a great relief in your ass.

  • Rohit5

    any one who say that Java is .., he is talking nonsense.

  • IDK why you have had such bad experience with Java in general, but the structure of a java program allows an average developer with almost no experience to maintain the code quite easily. It allows team leads to easily enforce uniform structure and design patterns within his team. For an average company, this is all they want to accomplish.

    All this is possible because of the way Java language is designed and works, which you find to be bad.

  • nobody

    Those who agree probably don’t do much in any other language.

    Java as problems that after 17 years it still can’t fix:

    1) Its horribly non-productive. I write circles around java projects in my shop. 5 years ago they were gun-ho java. After seeing me develop superior applications for 5 years in several non-java languages, the boss is ready to toss java and join with more productive languages.

    We have quantified the productivity hit where I work: Its between 4 and 10 times less productive. Don’t believe me, go learn a modern language and *REALLY* give it a chance and you’ll hate all the over bloated crap in java.

    2) Java isn’t a modern language; Java hasn’t changed with the times. Java is as stagnate as FORTRAN. Same “object oriented everything” or bust mentality.

    3) Java has no open source community. Java claims the GPL membership but its community sure doesn’t go try to find a completed high quality apps source code. No GPL no growth. Only top down genius who know what’s good for all.

    4) Strongly Typed. Curious you say? You thought that was a strength. In this day and age, especially with highly abstracted language like java – its a pure joke that its strongly typed. Most languages have advanced handling of types and push towards more productivity. Closer to the psuedo-code ideal. And the self proclaimed king of the hill, Java, still uses strongly typed primatives just like C. C has a logical reason – its a low level language suitable for embedded and OSs. Java’s reason? God knows.

    5) Java has become the facilitator of pseudo-UNIONs in corporations. If corporate executives ever get wind with the 10x productive which equals 10x cost for an application that looks, feels, functions exactly the same (except java is slower), their would be alot of unemployed Software Managers. Java is used like blackmail. Effectively locking in unproductive people wasting time writing slow unproductive code. Java had to be nationally advertised for years to overcome its obvious shortcomings.

    6) Java is scalable! I agree. Does that surprise you? Unfortunately so are other modern languages and no matter how hard Java fan’s yell it – it doesn’t change the state of other languages.

    7) Other languages are not scalable like Java: That’s right, I said. What you don’t get is that Java is scalable like a MAC TRUCK. Java is not UN-scalable and that’s a huge problem because 99% of the apps written in this world are not Amazon size nor will they ever be. Buy a MAC semi truck to tow your popup camper? YES! Because someday, someday, I may buy a travel trailer, then a mobile home, then I may go ice road trucking. Good for you. For the other 99.9999% of us an SUV is fine AND is faster AND gets better gas mileage. But you’re right when you say “Yeah, but you can’t take that SUV ice road truckin with a 40 ton load!!

    8) Java isn’t re-writable. Oh sure is OO and all that, but that OO turns monolithic when Java’s interconnected tentacles spread corporate wide. Java excels in have a 3000 class library that can be used to address and absorb any system out there. Fine. And then 10 years later, the company has to spend more and more on the union-like programmers who can’t re-write because its all just too big. Java was out to lunch when the principle of “do one thing and do one thing well” was taught.

  • I am sure you realize JVM used by JAVA is written in C!!!

  • That is marketing not technology. I am sure JAVA could do better marketing but that’s not needed. In all big IT schools JAVA is taught today. Try to stop that!!!

  • You are right Matjaz!!!

  • T. Berg

    Florian, if you’re an autistic spazzer who cannot let go of an argument, however misguided, just say so and move on, or prepare to have your arse fucked.

    -T Berg

  • Etnos

    ughhh… you being unpleasant is not a myth at all.

  • Says the commenter replying to a comment I made 2 years ago…

  • Danie

    Java is not going to end soon so don’t worry and be a java Programmer :D

  • krazzykoder
  • Edgar

    Java is CRAP (period). From a user (sysadmin) perspective, we don’t have nowhere near as much problems with any piece of software as we do with crap written in Java. I don’t really care how it compares to C, C++, Ruby, Python. What I care about is when there is a Java update, which come bi-weekly (at least seems that way), applications continue to work, and with Java it is never the case.

  • Hung Nguyen

    Agree, but for web applications only. For desktop, Java apps run like a shit. C#, and even better with .NET Native which is going to deliver with VS 2014, is supper fast on both web and desktop applications.

  • SonicFan4562

    Minecraft was made in Java.
    ‘Nuff said.