Re: Binary Compatible Versus Open Source Java
Posted: Apr 2, 2006 10:06 AM
> Invokedynamic, in my opinion, is more of a publicity stunt
> to keep the hope alive for potential deflectors to
> PHP/Ruby/$Anything_but_Java, than a serious attempt at
> turning the JVM into a general purpose platform.
In your mind, which features of the JVM are not desireable in software development? Which features, when turned off, would impact the Java security model, including mobile code?
So far, I've heard a lot of the dynamic language buffs talk about features of python, ruby etc. The primary theme is always about how much they have to type, and how verbose the Java language is. I'm not impressed by those arguments because I don't think that those, by themselves are a good reason to create a new language, and then ask the software development community to spend 10 years recreating all the software tools we have in one language for use in another.
Right now, we are on a 10 year yoyo cycle of software development. To date, we've yet to create any single language or runtime feature which can't be created in another language!
The emotional drive and charging dialog about the benefits of these dynamic languages is not providing any bang for the buck.
We need orders of magnitude changes in productivity, with corresponding improvements in program reliability. The vertical markets being attacked by APIs such as Ruby on Rails and now Grails are narrow from a general software perspective. I.e. those types of applications are focused on very specific types of software. Primarily they help with UI presentation, not with program correctness related to the collection, processing and managment of the information being presented.
Some might argue that simple loop interfaces and some other features help make the developers job easier. I've already stated above that those are largely typing issues. The syntax of the language and strong typing in Java make it difficult to get a loop and its execution wrong. If dynamic languages have problems managing loop execution because of lack of compile time typing, that might be an issue to discuss.
In the end, I'm not convinced that there's anything worth changing the whole world of software over. What Java needs, is better APIs for specific vertical markets!
J2EE is just too vertical in design. It provides a lot of things that are just not what should be done for the general case. However, it does provide some tools that are valuable for some types of complex enterprise applications. But, those tools come at a cost of complexity to the overall system that complicates the learning process and makes simple deployments extra verbose, which is one of the complaints of the dynamic language crowd.
I'm a Jini practitioner. I use Jini because it lets me deploy the smallest configuration and system I need, while supporting a much larger, more complex system design if needed. And, security and deployment configuration through the ConfigurationFile class is great because I can configure with real objects, and thus don't have to keep extending an XML configuration document with more types of data.
Java is not perfect, but the real value is there. It works, and provides a platform that is binary compatible across all the environments that I need.
Using other languages for simple tools is something I've done for years. But, I still create more reliable and useful software in Java than any other language.