Java何去何从?

Java has been very successful on server side. Java is flourishing on client side,but deployment and integration are blocking it from further thriving. 

        A few years ago, java was notorious for its ugly and sluggish graphical user interface. Since JDK1.5 release, complaints about user interfaces seem fading. But Java is still far from flourishing on client application. Two major reasons, I think, are blocking java from further thriving is application deployment and desktop integration.

        Many of my friends are complaining that it is very hard to deliver their java desktop applications to end users. The first question is dreadful nightmare of downloading and installing JRE. Another question is the conflicts between different JRE versions. Applications developed in java emerged a lot in recent years. They are developed in different time and compatible to different JRE. These java applications require different version of JRE. This usually results in massy jre enviroment on a machine. Another question is these application cannot use a same JVM.

        Jre installation is becoming more and more bloat. At java's very early stage, there is only one set of java called jdk. Later, with bloating of java library, java is divided into three major categories: j2me, j2se and j2ee. And now it is time to divide them into more refined grains. For example, why not split j2se into three types: small sized, medium sized and large sized. By division, we can provide more refined grain installation. Some application especially deployed using java web start can download small sized package, and lazy-loading those required class on demand.

        Another question about java deployment is java versioning. Isn't a way that we can update our jre from 1.5 to 1.6 gradually, without downloading a completely new jre installation? Why do we need to several jre of different versions installed on one machine? ect.

        Java desktop integration is another big problems that keeps java away from client application. If an application cannot interact well with native desktop application, it cannot solve the so-called data isolation problem. Nowadays, it is very clear that integration is the trend that every desktop application should follow. Applications that interact with other application, eg. input data from other application or output data to be processed by other application, can be more competitive the others with less integrations.

        Unforuntately, at the very beginning java is designed as WORA language, highly abstract from native OS. If java wants to thrive on client side, it has to reconsider the WORA conception. IMO, WORA should be kept at different level. At the core of java, we should keep it. But outside that, why not fit java into different OS, providing OS specific library and API? Desktop application naturally should target a specific OS platform. And people who are making desktop application are most probably producing their software targeting specific platform. If Java does not want to loose the market of client side, it needs to fit the trends.

        JDIC is not rigidly the conception of integration. It is just bigger AWT components. They still keeps the platform independent APIs. My sugguestion to java integration is to divide client java into different types of java according to major platform.

        Mustang seems to be striding to this direction. But the pace is not so big. It is high time for us to have revolutionary reform on Java.

你可能感兴趣的:(java,jvm,jdk,J2SE,OS)