Forgot your password?
typodupeerror
Java Programming

If Java Is Dying, It Sure Looks Awfully Healthy 577

Posted by timothy
from the is-someone-brewing-another-pot? dept.
Hugh Pickens DOT Com writes "Andrew Binstock writes at Dr. Dobb's that a recurring prejudice in the forums where the cool kids hang out is against Java, often described as verbose and fading in popularity but Binstock sees little supporting evidence of Java being in some kind of long-term decline. While it is true that Java certainly can be verbose, several scripting languages have sprung up which are purpose-designed to spare developers from long syntactical passages to communicate a simple action, including NetRexx, Groovy, and Scala. As far as Java's popularity goes, normally, when technologies start their ultimate decline, tradeshows are the first to reflect the disintegrating community. But the recent JavaOne show was clearly larger and better attended than it has been in either of the last two years and vendors on the exhibiting floor were unanimous in saying that traffic, leads, and inquiries were up significantly over last year. Technically, the language continues to advance says Binstock. Java 8, expected in March, will add closures (that is, lambda expressions) that will reduce code, diminish the need for anonymous inner classes, and facilitate functional-like coding. Greater modularity which will be complete in Java 9 (due in 2016) will help efficient management of artifacts, as will several enhancements that simplify syntax in that release. 'When you add in the Android ecosystem, whose native development language is Java, it becomes very difficult to see how a language so widely used in so many areas — server, Web, desktop, mobile devices — is in some kind of decline,' concludes Binstock. 'What I'm seeing is a language that is under constant refinement and development, with a large and very active community, which enjoys a platform that is widely used for new languages. None of this looks to me like a language in decline.'"
This discussion has been archived. No new comments can be posted.

If Java Is Dying, It Sure Looks Awfully Healthy

Comments Filter:
  • by Anonymous Coward on Thursday October 10, 2013 @10:20AM (#45091203)

    Java had closures in the form of Anonymous classes. While it is true that lamda expressions will be much more concise, it is not correct to suggest that closures are being added with Java 8.

    I often hear that Java "doesn't have closures." Since anonymous methods can capture variables within the scope of their declaration, they are closures.

    I also frequently hear that Java is "interpreted," but that's a whole 'nother discussion.

  • Re:Wake me up... (Score:5, Informative)

    by stewsters (1406737) on Thursday October 10, 2013 @10:27AM (#45091341)
    The great part about Java is that there are so many libraries for it.

    http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/primitives/UnsignedInteger.html [googlecode.com]
  • Re:Wake me up... (Score:5, Informative)

    by Anonymous Coward on Thursday October 10, 2013 @10:28AM (#45091367)

    Wake me up when java supports unsigned integers. Until then it's not a real language.

    Python, Perl, and Ruby are examples of other languages that don't support unsigned integers. These languages are independent of the underlying hardware and automatically upsize the integer to handle larger value. You can always use the AND operator to convert to an unsigned integer for C calls. (e.g. var & 0x0FFFFFFFF).

    You're not a real programmer if you can't adapt to the lack of unsigned variables.

  • Java and the JVM (Score:5, Informative)

    by Kagato (116051) on Thursday October 10, 2013 @10:30AM (#45091387)

    People don't understand the difference between Java the Language, Java the Virtual Machine (JVM) and Java the Browser Plug-in.

    What do NetRexx, Groovy, and Scala have in common? They are all languages that are considered production stable running on top of the JVM. There are about a half dozen production ready languages that run on top of the JVM in fact. By running in the JVM these languages automatically pick up all sorts of performance and availability enhancements (JIT, Hotspoting, caching, etc.) the JVM offers. That's a lot of R&D the new languages don't have to invest in. It also allows new languages to be used in existing Java infrastructure with little to no change.

    The reason this is all possible is because Java the language is just an abstraction that compiles to Java Op Code. Java Op Code is very stable. Since Java 1.0 all that's changed with the opcode is a couple new operations and couple deprecations. There's still around 100 codes total.

    So why do people think Java is on the decline? Well the browser plug-in has been getting a bad name as of late. But that plug-in != Java. And frankly very few applications need a Java Plug-in. HTML5 and JS work just fine for the UI. It's not going to be a great loss if peopledisable it. You also get knee jerk reporting on this advising people to get all Java on their machines. Like it's somehow less secure than the VB runtime executors.

    As far as jobs, I work in the java space. There's way more need than people to fill the need. I make extremely good money java programmer.

  • Re:Sudden death (Score:5, Informative)

    by Kagato (116051) on Thursday October 10, 2013 @10:46AM (#45091647)

    I consult in a lot of sectors. Banking, Insurance, New Media, Old Media, Start-ups, etc. People who want to leave Java for some new language are doing it because of a set of features. I've yet to come across anyone, let alone an institution, that wanted to leave Java because of Oracles court proceedings (I would assume against Google for Android).

    There was tons of talks on OpenJDK at JavaOne. If Oracle is the next Microsoft you would think they would have put the hammer down on that. I didn't see any of that happening. In fact Microsoft's cloud support of Java is based on OpenJDK and that was a keynote item.

    On the other hand, I do hear a lot of dissatisfaction from the MySQL folks. They are moving to Maria (or other DBs). That has little to do with Java.

  • Re:Java won't die. (Score:5, Informative)

    by ausekilis (1513635) on Thursday October 10, 2013 @10:46AM (#45091665)

    The reason Java is still alive and well is because it is the OO language most schools, universities and colleges teach in their CS classes.

    Which is both a blessing and a curse. I went through my programming undergrad classes in the last round they offered C and C++. It worked out well because my employer needed those languages and for me to be able to learn others quickly, such as Java and C#. My experience with classes in C++ and lower level bit-bashing in C gave me the knowledge in being able to create custom libraries and handle oddly defined standard binary blobs, such as DTED data.

    This same employer stopped looking at my school afterwards simply because Java was the dominant language. The graduates being churned out had knowledge of data structures and libraries, but knew very little of the ins and outs of binary data streams, binary blobs, memory management, and all those other things that you need in C and C++ that Java gives you for free.

    Yes, it's good to have an approachable basis for such a complicated field as programming (computer science/software engineering/development/etc..). However, going from C/C++ to Java is a lot easier than the other way around. There's a reason my professor called Java a "Training Wheels Language"

  • Re:Java and the JVM (Score:3, Informative)

    by Kjella (173770) on Thursday October 10, 2013 @10:50AM (#45091707) Homepage

    Java Op Code is very stable. Since Java 1.0 all that's changed with the opcode is a couple new operations and couple deprecations. There's still around 100 codes total.

    This page [oracle.com] seems to indicate it's slightly over 200 in Java 7.

  • by IamTheRealMike (537420) <mike@plan99.net> on Thursday October 10, 2013 @11:10AM (#45091977) Homepage

    NativeActivity doesn't support most of the Android APIs, including most obviously the widget toolkit. It's intended for games that just need an OpenGL context and raw input, all other kinds of apps still need to use Java.

    And you know what? That's not such a bad thing. A few years ago I guess I was basically a C++ programmer who was in the "Java sucks" camp, and I came back to Java only because I wanted to write stuff for Android. Over time I've come to appreciate the whole platform and ecosystem more. Things I especially appreciate:

    • IntelliJ IDEA and the Inspector. My previous experience with Java IDEs was Eclipse, which is not only incredibly slow and resource intensive but also has a very confusing IDE. Over the years this situation has changed - IntelliJ is genuinely helpful, and uses much more reasonable amounts of RAM than such IDE's used to. I find myself very much appreciating the real-time, on the fly static analysis that can find all kinds of issues from basic logic bugs to common API usage errors, like inverting the arguments of assertEquals in a unit test.
    • Most Java libraries are available via Maven repositories. Maven itself is a rather quirky beast that I never truly warmed to, but the Java world has what is essentially a giant apt-get for libraries. IntelliJ understands how work with Maven such that you can write some code that doesn't compile, press alt-enter over the missing class and tell it to go figure it out. It can find the right library, automatically download it and all its dependencies, install it into the local Maven repository and recompile the code, all on the fly within a few seconds. Coming from the C/C++ world where every single project has a uniquely malformed build system and package repositories (when they exist at all) are maintained by Linux distributors who are invariably miles behind upstream releases, it's extremely convenient.
    • JavaFX 8 turns out to be a really nice UI toolkit. Java got a well deserved reputation for awful desktop apps that were clunky, slow, and had UIs only a mother could love. This problem started with AWT that was limited by the lowest common denominator (Motif at a time when nearly the whole world used Windows). Swing was more powerful but was still very ugly and was hobbled by the lack of any truly great UI designers for it (every IDE creator invented their own). JavaFX 8 resolves all these problems: it's designed to be competitive with Cocoa, so the whole thing is an OpenGL accelerated scene graph, it makes it easy to support fancy effects and animations, and it comes with a very straightforward and easy to use Scene Builder app that makes building UIs a snap. I've used the Apple GUI design tools and Scene Builder is even easier. JFX8 seems to make desktop app development with Java actually compelling again.
    • Lots of people know it. That means, for an open source project, lots of potential contributors.
  • Re:Wake me up... (Score:5, Informative)

    by RabidReindeer (2625839) on Thursday October 10, 2013 @11:27AM (#45092207)

    "unsigned integers" are an artefact of "bit twiddling" programming languages. Bit twiddlers are essentially high-level assembly language.

    Java is not an assembly language, it is an abstract language. It is intended to create write-once/run-anywhere code that isn't dependent on the CPU or OS, byte/bit orders or how many bits are in an "unsigned integer".

    Most programmers actually use "unsigned integer" to refer to a collection of bits, not actually as a mathematical unsigned integer (cardinal number), just as they erroneously refer to characters interchangeably with "bytes".

    If you really DO want to work with cardinal numbers in Java, just don't use negative values. A java int can hold a respectably large integer value. And if that's not big enough, there are special classes that are more or less open-ended.

    If you absolutely positively must work with 100%-guaranteed cardinal numbers, use Ada, which allows user-defined types to contain user-defined ranges that will be checked at compile time and enforced at run time and that includes integers whose range is from 0..whatever. Of course, there's a price to be paid for that.

  • by Dynedain (141758) <slashdot2 @ a n t h o n y m clin.com> on Thursday October 10, 2013 @11:31AM (#45092261) Homepage

    You know what's fun? When a so-called Java expert runs a PHP project...

    Nothing but him bitching about how PHP sucks, and then discovering his code has factory factory factories in a central component that everything extended from (even when obviously unnecessary). And we wondered why we were having such performance issues.

  • by RaceProUK (1137575) on Thursday October 10, 2013 @11:37AM (#45092343)

    (chrome is 32 bit, and java 1.7 is 64 only.)

    Total bollocks. Here's 32-bit Java for:

    Windows [sun.com]

    Linux (tarball) [sun.com]

    Linux (RPM) [sun.com]

  • by binarylarry (1338699) on Thursday October 10, 2013 @11:51AM (#45092545)

    Twitter didn't switch to Java to take advantage of the mediocre "kind of a programmer" Java talent pool.

    They switched because their "alpha geeks" couldn't make Ruby/Rails perform adequately for the amount of traffic they get.

  • Re: Wake me up... (Score:4, Informative)

    by jythie (914043) on Thursday October 10, 2013 @12:36PM (#45093119)
    char []?
  • Re:Wake me up... (Score:4, Informative)

    by 0123456 (636235) on Thursday October 10, 2013 @12:55PM (#45093373)

    Yeah, no Java programmer needs unsigned ints. It's not as though they need to interface to code which does have unsigned ints, like calling C++ libraries, or reading data from files or databases created by C or C++ programs, or reading files in standard, language-agnostic formats which are packed full of bytes that you then have to process as 16-bit signed integers instead.

    Lack of unsigned variables is one of the most braindead ideas in Java.

  • Re: Wake me up... (Score:5, Informative)

    by lgw (121541) on Thursday October 10, 2013 @01:07PM (#45093517) Journal

    Characters suck. C++ and Python both allow easy 32-bit characters, which at least allows you to store one Unicode codepoint per "char". But in non-Western languages there are still glyphs that must be composited from several codepoints.

    But why would anyone care? UTF-8 works fine for sorting and comparing and so on, it's well designed that way.

  • by jeremyp (130771) on Thursday October 10, 2013 @02:12PM (#45094325) Homepage Journal

    Scala is basically C++ on the JVM.

    No. Scala is a functional programming language, it's nothing like C++.

  • by IamTheRealMike (537420) <mike@plan99.net> on Thursday October 10, 2013 @02:22PM (#45094447) Homepage

    The Windows JRE installer is an obnoxious piece of crap. Fortunately modern JDKs ship with something called the JavaFX Bundler, which makes native installers (exe, msi, dmg, rpm, deb) for each platform that bundles a stripped down JRE with the app, so there is no need to install the JRE or keep it up to date. If you are distributing consumer software or don't want to handle the problem of keeping JREs up to date, it's useful.

    There are also tools that can eliminate the need for the JVM entirely, for instance by ahead of time compiling entirely to native (Excelsior JET is one such program), or alternative JVMs that sacrifice some performance for code size, like Avian.

It is wrong always, everywhere and for everyone to believe anything upon insufficient evidence. - W. K. Clifford, British philosopher, circa 1876

Working...