Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Java is fifteen years old. It started life as an alternative to C++ with a comprehensive standard library. Riding on the coattails of the Internet boom, it was popular for writing web applets. Its supposed portability was touted as a way to write desktop apps that would run on any platform.

Now it's 2010. Applets are long gone. Desktop apps are giving way to web and mobile apps. Scripting languages are very popular, as is Flash, especially among web-centric developers. People have been chanting "Java's death is near" for several years.

Yet a quick job search shows that Java is still a desired skill among programmers. So what is Java used for these days? What kinds of apps are you writing in Java? This should give us an idea of the "state of Java" today. Has the Java tide shifted from Swing desktop apps to Android mobile apps?

If you write programs in a JVM language (such as Scala or Groovy), mention it.

share|improve this question

closed as not constructive by ChrisF Jan 30 '12 at 22:54

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

5  
Also, the Tiobe Index says Java is the most popular programming language this year. tiobe.com/index.php/content/paperinfo/tpci/index.html –  AlcubierreDrive Nov 5 '10 at 8:48
4  
Tiobe is nonsense. –  Peter Boughton Nov 5 '10 at 12:04
2  
(And that's not Java bias or anti-Java bias or whatever - I don't care either way - but simply to point out that Tiobe's methods are heavily flawed and the metric in general is absolutely useless. People need to stop referring to it.) –  Peter Boughton Nov 5 '10 at 12:09
2  
Linux is 20+ years old. It started life as an alternative to UNIX, riding on the coattail of the early Internet boom...has the Linux tide shifted? –  Xepoch Feb 4 '11 at 17:26
show 2 more comments

19 Answers

As a number of contributors have commented, scripting languages such as Python are gaining in popularity. That's fine for something that's thrown together quickly and isn't expected to have a long life time. But, if you're serious about your application, and expect to have to maintain it for 5 years or more, then you need to recognise that it's an exercise in Software Engineering, not just programming. For Software Engineering, there's nothing better than the Java ecosystem. This doesn't just include the language itself, but the range of tools that surround it, greatly empowering the developer (Eclipse, Ant, Maven, JUnit) - all at zero license cost. There never has been a development ecosystem like Java - either before or since.

'Nobody ever got sacked for choosing Microsoft': these conservative organisations will go down the .Net line. Those with their eyes wide open will go down the Java line.

share|improve this answer
add comment

I currently work in a small dev team (7 people), in an industrial company (fire detection). We develop software tools to configure the physical equipments, and a supervisor to visualize the events of the customer's sites.

We are currently switching from Borland C++ to Java. All new developments are done with Java, including the successor of our supervisor software (this is a huge project).

To my view, Java/Swing is a great choice for creating modern, platform-independent, desktop applications. We also considered Qt, but my colleagues were bored of C++ and wanted to change (plus, Qt was not free for commercial use, at that time).

A big advantage of Java is the high quality tools available ; we use Maven, Archiva, Netbeans (which includes Matisse and VisualVM), SwingExplorer and JMockit. These are invaluable tools, really.

share|improve this answer
add comment

Consumer side desktop apps are giving way to web apps... JSE is still heavily used for desktop apps in business/vertical market development. And of course, JEE is heavily used in enterprise/corporate web development!

It's really hard to throw away all that legacy code and start fresh with a new language. That's why you still see so many requests for Java programmers. Those are the jobs that are heavily entrenched in the businesses. The Java guys are working side by side (literally) with the other departments to develop custom code.

It's a completely different set of circumstances from the consumer side, where it's programmers that could be physically located anywhere in the world banging out fresh new code to hang on brand new websites.

share|improve this answer
add comment

The company I work for uses J2EE and uses it for web development too. I know SAP has integrated a Java interface that can be used instead of ABAP.

share|improve this answer
show 1 more comment

Java has become "what you do to pay the bills because those are the majority of the jobs in this area." Java is less and less what people want to work with on their own time. You use it if it's the only option out there, but you look long and hard before coming to that conclusion.

Otherwise, I think raganwald put it best when he called Java "cubicle farm fertilizer" (http://news.ycombinator.com/item?id=1241973).

share|improve this answer
show 1 more comment

If you write for the Google Application Engine you can choose between Python and Java. No .NET.

share|improve this answer
add comment

I don't use the Java language much although I do use the JVM heavily. I use Grails for basic crud apps. The main reason I chose it over Rails or PHP is because it allows me to leverage Java code written by other people at the company I work for. This allows me to avoid having to spend an inordinate amount of time working around a few edge cases which are very specific to the apps I work on since someone in the company has already solved the issue in a jar file I can drop in and call.

share|improve this answer
add comment

It's still being used in the Academia quite a bit ...

share|improve this answer
show 1 more comment

GWT - write, debug and run code in Java and receive nice obfuscated javascript code. AJAX application, fast development, nice hosted mode and other sexy features included

share|improve this answer
add comment

Java is definitely heavily entrenched in the back office. All the Java work I've done over the last decade was server-side, with a web-based front end (JSP/Struts/JSF) if needed. The projects I worked on were business integration-type things, EDI replacement or similar document-processing stuff. Lots of message queues, RDBMS, and XML. These are the kinds of things businesses tend to set up around their business model and then simply tweak and maintain until their business model changes (if it ever does).

I've seen very few Swing-based desktop apps, most of them were based on either Eclipse RCP or NetBeans.

share|improve this answer
show 1 more comment

In the major software vendor firms, young engineers joining in are getting trained in a 40:40:20 ratio in .Net, Java EE , and remaining technologies taken as a whole.

Means from an enterprise application point of view java EE is still used widely, and it will continue to be so, in the near future. Many e-commerce websites of large retail groups, banking firms etc uses java EE. the job search profiles you mentioned shows the same, at least for maintainance tasks java developers are still needed , in large numbers.

share|improve this answer
add comment
  • Serverside

Java (J2SE/J2EE/JEE) has been the mainstay of Server Side development for enterprises and will probably continue to do so for some time.

Why?

1.) Enterprises like stability. Java's been given a lot of stick recently for lacking certain language features and not breaking with the past. To be blunt, my Investment Bank client Loves that stability.

2.) The JVM is an incredibly powerful and flexible runtime platform and niche languages (ducks for cover) such as Groovy, Scala and Clojure can solve difficult problems (functional mathematics anyone?) while being completely interoperable with Java and its vast numbers of libraries.

  • Desktop

Java on the desktop? Hmm, not so much and I think JavaFX has come to late too the party - time will tell

  • Mobile

Java in the mobile space? J2ME runs on a surprising number of devices, but the reality is that shiny smartphones are the way of the future, so that means at this stage Android. Unfortunately this is under a lawsuit cloud so we'll have to wait and see about Java's future here.

share|improve this answer
show 2 more comments

I am a JEE developer. I work mainly on HTML / Flex based apps, and a few purely backend solutions. I still do Swing every now and then.

Java is still the language of choice for large enterprise applications (JEE). There isnt that many alternatives for it. You could say that .Net / C# is the natural competition, but in my industry (private banking) it will still take years before me move to this "new" platform.

Java's strength is that its model is very well understood, the application servers are mature and the there is enough competition that you are not afraid to being locked to a vendor.

The JVM itself is an interesting platform, on which we start to see more and more development (Scala, JRuby, Jython, ...). The JVM being extremely mature, it is a good plateform on which to build new solutions.

Java is not as sexy as some new languages / frameworks, but is still is the right solution for a vast range of enterprise problems.

People have been chanting "Cobol is dead" for even longer. And sadly, Cobol is still alive ... Java has still quite a few years ahead !

share|improve this answer
1  
That isn't universal to Private Banking. I work for one the largest banks in the world and our private bank runs on .NET apps and old mainframe systems written in COBOL. –  Jeremy Nov 5 '10 at 12:47
1  
also to my understanding enterprises needing to think decades in the future do not like vendor lock-in. This is a reason to stay with Java instead of C#. Also Cobol IS still alive because it is simply very well suited for moving data around. –  user1249 Feb 4 '11 at 22:31
show 1 more comment

While most of my work with Java is server-side J2EE, I do think that the eclipse project is worth a mention. This is Java on the desktop! Not only is it the development tool of choice for most Java developers, it is a very interesting platform for Rich Client applications. For example, newer versions of the Lotus Notes client are based on the eclipse RCP. The SWT GUI library is also a handy alternative to Swing.

Check it out!

share|improve this answer
show 3 more comments

J2SE is widely used in enterprise, particularly for high throughput/low latency messaging systems implementations. Those are not quite traditional usages of Java (aimed at eliminating dynamic memory allocation).

J2EE is used for integrated Servlet-based web applications.

The last UI I've seen being written with Swing/Java is ~10 years old :)

share|improve this answer
show 1 more comment

Java ME (Micro Edition) is still widely used in mobile development, such as Nokia. A recent example is Google's Android platform whose SDK is Java based.

share|improve this answer
add comment

I'm currently working on OpenGDA, a Java-based tool for data acquisition at synchrotron facilities. You'll find that Java is commonly used in the scientific community by people who have finally moved on from FORTRAN (though Python is currently hot and exciting among scientists, too).

Actually my first Java experience was with Java WebObjects, though that has now all but died.

share|improve this answer
show 3 more comments

Sincerely, I think that today it's rarely used for desktop applications.

In my environment it's almost always used for enterprise applications (most with a JSPs-Servlets based web user interface, sometimes combined with some AJAX controls), and some SOA architectures.

Indeed, the vast majority of the applications are few more of a CRUD with some validation and integration logic. I mean that it's rarely used for complicated software, with complex algoritms, or this kind of things that we dream working on when at College.

share|improve this answer
8  
It's very rarely used for consumer desktop applications, but there are still lots of in-house desktop applications and trading system front ends written in Swing. –  Dan Dyer Nov 5 '10 at 12:24
1  
I've written Java applications to do pricing and demand planning, and I have friends who have written financial trading applications, so it's definitely used for "complicated" software. Or did you mean it's just not used for such where you work? –  TMN Nov 5 '10 at 13:35
1  
Complicated Bussiness Rules don't imply complicated algoritms –  Tomas Narros Nov 6 '10 at 16:36
add comment

Most of the Java jobs I've found are looking for people to work with the J2EE side of things rather than standard SWING app development. And as has been my experience so far, most of those jobs are in the finance sector.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.