Sunday, December 22, 2013

JVM’s Legacy… living with it !?!

Even through application virtual machines were not new, when JVM was initially announced it was an instant success looking in mind the challenges of those days. Challenges in terms of having a suitable OO programming languages with suitable libraries and framework plus having platform which can support built once run anywhere type of environment. JVM along with Java programming language + java development kit (JDK) did good work in address these.

But now the things have changed. Technology landscape has evolved drastically. In today’s cloud era challenges are completely different. Challenges in terms of getting application which are

  1. challenges to build and run applications over different PaaS and IaaS cloud providers
  2. challenges to elastically scalable with minimal human intervention
  3. challenges to run applications in multi-tenant environments with complete isolation

When we try to judge Java in this newer landscape it seems bit too old…

  1. only two innovation in two decades

…with not so good answers for any of the new generation challenges…

  1. poor memory management with a GC that sucks memory
  2. JVM and associated app server are memory
  3. bit too slow on program execution front
  4. do not know how to use modern multi-core processors
  5. too many security vulnerabilities – an easy target on web
  6. too many JVM versions giving hard time on compliance
  7. do not ask where is multi-tenancy

Sunday, December 8, 2013

What is the future of Java?

I was been trying to find Java road map, especially in term of what is in store for Cloud centric development and delivery support. I agree with Paul Cook, there is good amount of development happening in areas like improving the jdk, community is coming up with frameworks, accelerators, added tools etc.,  but the issue is with core architecture which has not seen any major improvement over two decades especially when the complete IT landscape is changing due to cloud centric models.

Java 7 is meant to set the foundation for cloud centric platform, but the real cloud-ready features won't make an appearance until Java 8 in 2013 at the earliest.

Moreover I do not think pure OO development is in fashion these days. At least I do not like writing class for every dam think I need to do. I am sure there are lot of other developers who coded in languages like Python and Ruby do share the same feeling. This means language should also improve to incorporate more of dynamic and functional style of coding like lamda expressions...

Oracle's road map does little to revitalize the platform. Where are those vertical JSRs for solving cloud-specific problems? Where is the vertical API for resource sharing, state caching, cloud deployment and monitoring, Distributed Management Task Force (DMTF) open management interoperability, or minimizing the number of network calls or calculations a CPU-constrained app makes? Or cloudy authentication and authorization requirements?

This raises the question… what is the future of Java, is it slowly dying? This thought makes me bit uncomfortable. I think it is time for Oracle to loosen up things for the community to development java, to help the most popular programming language to get its charm back.