Slashdot Mirror


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.'"

24 of 667 comments (clear)

  1. Cutting edge == Johnny Rotten? by Vellmont · · Score: 5, Insightful

    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
  2. Re:the best programmers? by spiffmastercow · · Score: 5, Insightful

    I have tattoos, and I used to have piercings. I'm also a damn good coder. I seriously doubt the two are related.

  3. Tempest, meet teacup... by neiras · · Score: 5, Insightful

    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.

  4. I've.never.used.groovy.so.I.have.a.question. by Daniel+Dvorkin · · Score: 3, Insightful

    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.
    1. Re:I've.never.used.groovy.so.I.have.a.question. by Daniel+Dvorkin · · Score: 3, Insightful

      Namespaces are useful, and custom namespaces cut down on a lot of the clutter in Java, but they shouldn't be necessary for basic functionality. The way I see it (YMMV, of course) K&R C provides pretty much the functionality that any language should have as part of the core language spec; if I can do something in n characters in C but it takes me 10n characters to do it in some newer and supposedly better language, I'm hard-pressed to consider that an improvement.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    2. Re:I've.never.used.groovy.so.I.have.a.question. by Abcd1234 · · Score: 5, Insightful

      Uhuh... so you determine language quality by the terseness of it's text.

      Interesting.

      Well, you have fun writing your terse programs with inexplicably named, but I'm sure very compact, variable and function names, while the rest of us move on to writing code other people can actually, you know, read and understand while putting up with the horrible hardship of having to type a little bit more.

      Oh, and BTW, any language that has namespaces has an import keyword. Maybe you should try it out sometime.

    3. Re:I've.never.used.groovy.so.I.have.a.question. by ls671 · · Score: 3, Insightful

      > ArrayList myList = new ArrayList();.

      Then just use the construct from the "founding fathers" if it bothers you that much, it still works you know :-)

      ArrayList myList = new ArrayList();

      More seriously, how much time does a developer spend typing compared to what he should be spending thinking ?

      The fact that java forces you to type more also forces you to type basic documentation as you code and in my opinion, this is a good thing. In the end, you get easier to maintain code at almost no extra cost ;-)

      I have never understood developers saying that a language was superior because you can write code using less key strokes using it.

      --
      Everything I write is lies, read between the lines.
    4. Re:I've.never.used.groovy.so.I.have.a.question. by ardor · · Score: 4, Insightful

      No. K&R C lacks the following things:
      * first class functions, lambda, closures
      * comprehensions
      * coroutines
      * proper generics/templates (no, macros are _not_ a replacement)
      * painless string handling
      * module system
      * namespaces
      * reflection
      * support for common oop patterns and tools, like class definitions, dynamic dispatch etc. it has to be manually constructed, which is quite time consuming

      Now, of course it is a valid point that these things do not necessarily belong in C. It is a system programming language, after all. But these features are very important for other domains, such as application development. Right tool for the right job, please. C is _not_ the shiny hammer, and not everything is a nail.

      --
      This sig does not contain any SCO code.
  5. Re:Well this is awkward by AuMatar · · Score: 5, Insightful

    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?
  6. I know how *not* to make it more relevant by hedrick · · Score: 4, Insightful

    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.

  7. Re:The VM is decent. The language sucks. by devent · · Score: 3, Insightful

    I don't get it, why you want the java language to die? I programming Java now for 4 years and the only thing I'm missing are closures.

    The core of Java is very robust, you have class, enums and interfaces. Generics are do what they are suppose to do (and they are backwards compatible). Threading is integrated in the Java with synchronized and the threading API. In addition, Java have neat features like annotations and anonymous classes.

    Reflection is very easy to use, but the exception model is perhaps debatable.

    The tools and the libraries are top class. Maven is my favorite killer-tool for Java.

    If Java get closures, what are you missing in Java? It's maybe not the future but Java is a very robust and consistent language.

    --
    http://www.mueller-public.de - My site http://www.anr-institute.com/ - Advanced Natural Research Institute
  8. Lemmings by Animats · · Score: 5, Insightful

    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.

  9. The same is true of Cobol by Rix · · Score: 4, Insightful

    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.

    1. Re:The same is true of Cobol by Prof.Phreak · · Score: 3, Insightful

      The enterprise sector is spectacular at painting itself into corners.

      What are some of the alternatives? Is .Net not worse of a corner? And at ``enterprise'' level, pretty much everything turns to crap anyway, and as far as crap is concerned, Java is usually easier to deal with than say... poorly written Perl (I'm a big Perl fan, but I've seen the code written at a fortune500 corp, and... well... it's unmaintainable crap written by a cobol programmer).

      Would C/C++ be a better alternative for internal apps? Unlikely!

      Would Python? Perl? PHP? I doubt it. Primarily 'cause nobody who writes such enterprise apps would really know what they're doing (consider folks who've worked at a corp for last 15 years).

      Yeah, everything most enterprises need should be web-based anyways---but the guts behind that would still be... what? VB.NET? Heh!

      Obviously there are different definitions of ``enterprise.'' But if YOU had to pick a language for some internal app with a dozen or so existing developers (all of whom know Java, some of whom know other languages), which language would you pick? [throw in assumption that you need to run it on a unix-like platform]

      --

      "If anything can go wrong, it will." - Murphy

    2. Re:The same is true of Cobol by peppepz · · Score: 3, Insightful

      As for inconsistencies, how many mutually incompatible versions of Java are there?

      Isn't extreme backward compatibility the reason Java gets most often bashed for? For what I know, any 1.1 source code should compile fine under java 1.7 (unless you used something like "assert" as a symbol name, but even then you should get away by using the -source switch for the compiler).

      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.

      To be honest, every single C compiler out there defines its own incompatible implementation of C. That's because the standards move so slowly that every manufacturer tends to put its own custom features in his compiler. I don't recall this happening with Java, only MS tried to do that with J++ IIRC, but Apache Harmony, the Eclipse compiler, OpenJDK, GNU Classpath and Sun's JDK all implement the very same language if I'm not wrong.

      That said, I'm favorable to an independent standardization of Java, but I don't think it will solve any problem of Java.

  10. Re:Java isn't pure OO by WeirdJohn · · Score: 3, Insightful

    The thing I hated most about Java is that I can't just create a new class and implement a few messages and use it in existing code, unless I somehow shoehorn it into an existing class hierarchy, or implement an interface. If the existing code was done without interfaces in mind, I have to edit a few hundred methods in dozens (if lucky) of files, and not break anything.

    To avoid this I have to over-engineer prototype code, and increase production cost estimates by at least a factor of 4, or else use a generating framework that leaves me with no idea what any of the generated code does, which makes fixing subtle bugs so much fun.

    At least smalltalk works. And the smalltalk debugger is possibly the most elegant and efficient ever.

  11. improve the JVM bytecode by basiles · · Score: 4, Insightful

    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.

    1. Re:improve the JVM bytecode by basiles · · Score: 4, Insightful

      I was serious. Tail recursive call is one of the major feature lacking in the JVM. See http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm http://openjdk.java.net/projects/mlvm/ And there is no way to implemnent tail-recursive call in its full generality (including tail-call optimisation to statically unknown code, e.g. thru virtual methods...) without a proper support from the JVM. This has nothing to do with addressing modes (which you don't need in a VM offering garbage collected values). And the Ocaml virtual machine bytecode does indeed show that other kind of bytecodes can be useful. JVM is not the perfect VM; it could and should be improved.

  12. Re:Groovy by IntlHarvester · · Score: 4, Insightful

    The history of Java is very instructive for any aspiring professional coder.

    Management: Damn these irreplaceable "programmers"! Look at their goddamn salaries. We need to standardize technology, remove the sharp edges, and train people who understand! Sun has got the thing.

    Programmers: Heh. We're going to be spinning out gotta-haveit ETLA frameworks faster than your Indian developers can say 'Yes sir! Right away sir!". Good luck with that. Now bend over and take another load of XML. *cracks-knuckles*

    Live by the marketing hype, die by the marketing hype, Sun Java.

    --
    Business. Numbers. Money. People. Computer World.
  13. The whole point by shutdown+-p+now · · Score: 3, Insightful

    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.

  14. Java aint going anywhere by jonwil · · Score: 3, Insightful

    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)

  15. Re:The VM is decent. The language sucks. by u17 · · Score: 4, Insightful
    A couple of reasons why Java sucks:
    1. No proper support for namespaces (see my other comment)
    2. No support for storing members in-place. If you want a Vector3d class, (i.e. an array of 3 doubles with an associated set of functions), and you want it to be fast, without referring to the members by pointers, you have to enumerate the members: {double x; double y; double z;}. If you wanted to have an array of doubles, you could only store a pointer to the array, and with an extra allocation: {double[] data = new double[3];}. For a Vector3d this is not so bad. But imagine the code for Matrix4x4d. This is a real shortcoming, if you look at Java3D, it actually uses a matrix with members defined like this: {double m00; double m01; double m02;... etc, 16 times}, instead of a double[][] array. If you do it this way then in functions you have to manually unroll loops, you can't just iterate over the values.
    3. No support for proper templates. The "generics" are only syntactic sugar. You can't have something like template <int N, int M> Matrix<N, M> for faster code. ArrayList<int> doesn't work. When you write "arraylist of integers", you expect an object with a tightly packed array if ints. But the only way to do this in Jave is to box them, and if you do, think of the waste: the array actually holds pointers and each Integer is separately, individually allocated. Additionally, each Integer not only holds an int, but also a mutex, which leads to the next problem.
    4. Every object has a mutex. WTF? Why endure such a huge waste, why increase the size of every object, when only very few of their mutexes are actually used?
    5. No operator overloading. OK, this can be abused like everthing else, but when you're working with a custom number class or with BigInteger, you don't want to clutter your code with method names that represent operators.
    6. No unsigned types. Of course there are conversion issues when mixing signed/unsigned in expressions. Normally you're fine with just signed, but what about, say, file formats that have uint64_t in them? Should you store them in BigIntegers?
    7. The standard library is a mess. They keep putting more and more stuff into it, never deprecating anything, and the result is pretty bad in many places. The library is over-engineered and in many places the implementation shines through the interface. They keep shooting themselves in the foot by having to maintain crap code like Swing for eternity. Coding in Swing is horrible when compared to, say, Gtk.
    8. Missing lambda functions/closures, 'nuff said
    9. No function pointers. This leads to one-function interfaces which only clutter your code whenever you use them.
    10. No typedefs. Especially when using generics, you don't want to type Map<String, List<Integer>> all the time, you want to type MyFancyMap instead.

    There are more things, these are just those that irk me most. I love the idea of applets, webstart, and portable bytecode, and I'd love to see Java succeed, but the language is so badly done I can't see this happening.

  16. Never Revolutionary, but Still Relevant by RAMMS+EIN · · Score: 3, Insightful

    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.
  17. Re:Oracle has some work to do by TheTurtlesMoves · · Score: 3, Insightful

    Despite what a lot of people think. The games market on PC/servers etc is pretty small. Sun was wise not to push it really. For games you would need Xbox..etc to support a jvm for it to really make sense. And that will not happen for a number of reasons.

    However there is lwjgl (opengl/openal binding for java), and most common higher level languages can run on top of a JVM these days. (Jython, JScheme, Kawa, lua, ....)

    --
    The Grey Goo disaster happened 3 billion years ago. This rock is covered in self replicating machines!