9

As every Java developer knows, Oracle bought Sun and the future of java looks quite unclear, specially since Oracle wants to monetize the JVM. Java as a language has also been stale in the last few years, the non-inclusion of closures is one example (which might be included in java 1.8) At the same time, some new technologies such as Ruby, Scala and Groovy are being used to deliver complex sites.

I'm wondering if there are companies or organizations which are talking, doing spikes or starting to use a different technology, with the idea to stop using java for green field projects, in the same way that 15 years ago companies migrated form C++, perl and other technologies to Java. I'm also interested to know what are the impressions of this happening, for example: planning to migrate to a different technology in 2 years.

To be clear, I'm not asking which technology is better. I'm asking if your organization is thinking to leave Java for another technology.

4
  • 1
    Aren't Groovy and Scala dependent of the JVM ? If so, they are also concerned by Oracle wanting to monetize the JVM. Commented Feb 14, 2011 at 14:08
  • You're right. That will have an impact on adoption of Scala, Groovy or JRUby in companies which want the commercial jvm instead of the open jvm. I'll leave the original question untouched as I think that some companies might be happy to pay for the commercial JVM in order to use a different language
    – Augusto
    Commented Feb 14, 2011 at 14:39
  • As a Java developer, I take issue with your "as every Java developer knows" statement. I think the future of Java is both a) Clear and b) Bright. I'm sure some people might want to pay extra for Oracles "premium" support package, but for those of us who just plan on sticking to the free, open-source version of Java (which isn't going away!) then it's somewhat irrelevant.
    – mikera
    Commented Feb 14, 2011 at 16:23
  • Mikera, you mention open source, but some of the influential java developers who used to lead open source projects, are now leading projects in other Languages, so their "energy" is diverted away from java. Check all the amazing frameworks that are out there for Scala, Groovy or Ruby. I don't have numbers to back this up, but it might be interesting to check how many "lines of code" have been committed to open source repositories in the different mainstream languages and the tendencies.
    – Augusto
    Commented Feb 14, 2011 at 22:19

4 Answers 4

9

Not at all - in fact I'm investing heavily in Java as a platform at my company (a startup developing SaaS applications and tools for data mining).

Here are the reasons:

  • Picking Java as a platform doesn't mean you have to use Java as a language. We use Clojure as the primary application development language, occasionally dropping into Java where needed. But other JVM languages like Scala and Groovy are great as well.

  • I'm personally not worried about Oracle. The main implementation of Java will almost certainly continue to be open source (OpenJDK) and freely available. If Oracle did anything stupid then other big companies (I'm thinking IBM and Google in particular) have too much invested in Java to let the get away with it, and they could easily continue to develop Java without Oracle's help.

  • The JVM is a great execution environment. Cross platform, very high performance, extremely good optimizing JIT technology. It's close enough to native speed that I don't care about the fractional amount that it is slower than C/C++, and this overhead is more than compensated by proper garbage collection and a managed bytecode execution environment etc.

  • Java has a great ecosystem of open source libraries. In fact, I'd say it is the best ecosystem overall of any language. This means that most of the "heavy lifting" in terms of infrastructure has already been done, to an extremely high quality. And the fact that most things you need are open source means you don't have the cost (in terms of both money and management time) of obtaining licenses.

  • Eclipse is a great IDE and provides a fantastic toolchain for the development of robust enterprise applications. We use Maven, JUnit, Git/SVN integration and a host of other tools that are available as Eclipse plugins. It all "just works".

Finally, what are the other options?

  • .NET is the only platform with comparable capabilities and I personally like C#, but it locks you into Microsoft technologies (worse than Oracle/IBM IMHO) and doesn't have the same breadth of open-source ecosystem. Fine for Microsoft shops, but not if you want to control your own technological destiny. And yes, Mono is cute, but I can't afford to bet my business on a platform that may or may not be able to maintain a working level of compatibility with the .NET mainstream.

  • Then there are all the other great language that are very good at what they do (e.g. Ruby, Python, PHP, Javascript) but don't offer a compelling, comprehensive equivalent to the Java platform. The risk is that you have to start gluing a lot of things together in a slightly-less-than-beautiful architecture. Not a problem for building websites, quick and dirty apps, but less appealing for long term product development.

  • C/C++ is great for systems programming and games, but just too complex / costly / inflexible for modern web application development.

  • And then there are the beautiful languages that I love like Haskell, which are fantastic from an academic perspective but just don't have the industry adoption / ecosystem necessary to make them a credible platform choice. Also I can get most of the benefits of modern functional programming by running Clojure on the JVM.....

So yes, it's a complex decision. But I made the Java decision above all other options after a lot of considerable research and consideration. I'd still make the same decision today.

UPDATE

A few words about the choice of Clojure on the JVM as a language choice. Main motivations for this were:

  • Concurrency - Clojure has a unique concurrency story, well work watching this video that describes some of the core concepts. It can scale reliably to massively multi-core architectures by using Software Transactional Memory. And it manages to do this without much overhead (lock-free!) which is quite a remarkable feat of engineering.
  • Functional programming - Clojure is a functional language that emphasizes immutability and higher order functions. It's not as purely functional as Haskell, but it is first and foremost an FP language. Some people say this helps you write better programs.
  • Programmer productivity - Clojure gets all the productivity benefits of the Lisp code-is-data philosophy. In practice this means incredibly powerful macro capabilities, and simple but extremely flexibly syntax that you can use to define your own DSLs for any problem you are dealing with.
  • Need for a dynamic language suitable for rapid development and scripting - Clojure can be used in a standard build-test-deploy cycle but it's actually more natural to use a REPL to develop interactively, modifying the running code environment as you go. For example, I use Incanter to be able to plot graphs and visualise data on the fly as I develop to see the results of batch runs.
  • Java interoperability - Clojure's Java interop in very effective. Clojure objects are Java objects and vice-versa, so it is trivial to call Java APIs and libraries whenever you need them. This gives you all the benefits of the whole Java ecosystem of libraries and tools.
  • Good community - Clojure's community is small but dynamic, friendly and growing fast. Lots of great open source projects already, such as Incanter (statistical computing) or Ring/Compojure (web server framework) or Counterclockwise (Eclipse IDE plugin)
3
  • Mikera, this is exactly what I was asking. Your company is leaving Java as the primary language for application development and using Clojure instead. I agree with you, that the JVM will not disappear, specially with some companies investing in other languages that run on top of the JVM. Could you share a bit more about what was behind the decision to use clojure as the main development language?
    – Augusto
    Commented Feb 14, 2011 at 22:34
  • Sure, I've added some commentary on why Clojure in particular (I also considered Scala which was also very promising, but Clojure won by a narrow margin because of its Lisp-ness)
    – mikera
    Commented Feb 15, 2011 at 22:55
  • Thanks for the explanation about why your company decided to use clojure!
    – Augusto
    Commented Feb 19, 2011 at 20:10
7

It all depends on the customer.

Java is always going to have its own little niche where people are going to gravitate to it for one reason or another, for just the same reasons that people gravitate to .php or .net, but ultimately it depends on the customer's requirements and preference.

If a customer says... I want this application to be in java... are we going to say no? probably not... if they say we don't really care.... are we going to write it in java? probably not, but thats just speculation.

We have applications written in java that have a long standing history, but it appears that the customer is meticuliously replacing EVERYTHING with the windows brand.... oracle to sql server... unix/linux with server 2008... and php and java with .net.

If that happens then yes... unless a new customer comes in and says hey... we want this written in java... we'll be using .net.

1
  • A big US car retailer is doing something similar, it's starting to build most of the greenfield projects in ruby rather than in Java.
    – Augusto
    Commented Feb 14, 2011 at 14:20
1

First a premise, I don't work at a software company.

Ok, we use Oracle as our main database with all of our important information stored on it. Because of this, we plan on continuing to use Java for anything to do with Oracle. Oracle's acquisition of Sun is a boost for us to continue to use Java for anything Oracle related.

But, any desktop applications are written in C# since everything is Windows based.

0

Is your company thinking of transitioning from java to another technology?

To answer you question. No.

As every Java developer knows ...

In companies of any significant size, it generally isn't developers who decide issues such as whether the company should move away from Java and towards something else. And for the types who do make these decisions, other factors than those you listed are important.

... the future of java looks quite unclear, specially since Oracle wants to monetize the JVM.

On the contrary, I think that the future is clear. Java evolution will continue at a slow but steady pace, and the core SE and EE technologies will continue to be free. For me, the only real area of uncertainty is what will happen with the Oracle vs Google bunfight. But one way or another, I expect that Android / Davlik will prosper as an alternative to Java ME ... but only for mobile platforms.

Java as a language has also been stale in the last few years, the non-inclusion of closures is one example (which might be included in java 1.8).

This may irk developers, but the "staleness" is actually a consequence of Sun / Oracle paying attention to what business wants ... a language / platform with long term stability.

At the same time, some new technologies such as Ruby, Scala and Groovy are being used to deliver complex sites.

Again, from the management perspective the jury is out on whether these technologies are better across the board.

  • Are the claimed productivity increases really demonstrable in the long term?
  • Is the performance there yet? Scalability? Third party tools and libraries?
  • Can they recruit experienced staff?

A company-level decision to switch to a new language has significant costs and risks, especially if there is a significant amount of existing code in the "legacy" language.

1
  • @Augusto - I have answered your question; see first sentence. Are you happy now?
    – Stephen C
    Commented Feb 14, 2011 at 15:48

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