Can Java become a perfect technical platform?
Translator: Online discussion on Java and other languages or platform familiarity has not stopped, or even some people will put forward such problems, especially some beginners, more confused. This article is more objectively evaluated by all aspects of Java, which tongs Java's advantages and discusses some of Java's defects and places to be improved. I think it is worth a reference, so translated it, I hope to help people who care about Java.
Foreword
Java makes many programmers again, like many of the development platform / language. Of course, this does not include those fanatical Java enthusiasts, which are better for them than .NET, LAMP, or any other language or platform. However, we have to face complex swings, huge EJB norms, etc., for additional requirements for hardware, and multi-end implementations of J2ME, etc. Throw more of these Java's weaknesses, we can say that Java is a perfect technical platform, then have Java's potential to become a perfect technical platform?
This article will discuss this topic from two aspects. I will tell you in detail what is the perfect technical platform and why Java platform can become a perfect technical platform. After that, I will "avoid the weakness of the Java platform through the design optimization.
basis
First of all, why do you care about whether Java is a perfect depression platform? Is it not very good now? No, not. I believe that when the article is over, I will show you some unfairted shortcomings in Java. Solving these shortcomings will accelerate the development of the Java platform and improve the performance of the entire development platform. In short, it will make Java a real technical standard in the industry or business, becoming a super language of programmers.
What is the perfect technical platform?
Before I make further explanation, I should first define what the perfect technical standard I think is. Simply put, I think the perfect technical platform should be such a software system, which allows novice or senior developers to use, and can write simple programs to write advanced applications, it should be able to run in all hardware platforms Or on the operating system platform, and should be localized or proximate to localization.
Define the scope of discussion of this article
Similar to the subject of this article, it is important to define a range in advance. First, we don't discuss any non-Java technology platform. You may think this is too narrow. I don't think so, this article is to discuss all aspects of the Java platform separately, not to compare with other language platforms. My interest is to have constructive perspective in order to improve the Java platform. If possible, I hope that the supporters of other technical platforms will be able to publish a similar article to propose them to think the perfect technical platform.
In addition, I also assume that the Java language is already the best program language in various technical platforms. And I will not discuss the latest Java2 platform J2SE1.5, although I can feel some of the changes in J2SE1.5, such as "Keeping Up with the Jonees", pointing the spear head to the C # language. A stability of a language requires at least 8 years of continuous verification to prove whether its original design is robust. The practicality of parametric collection is obvious in JDK1.5, some of which, for example, autoboxing, enumerations, and Static Imports have attracted extensive attention from developers.
Java inherited a strong row from C and C , which was designed as an object-oriented language, I think this is a key to the core language and excellent platform. Of course, this is not what advanced thinking because of the object-oriented language from the earliest Eiffel to SmallTalk, then what is the fundamental difference between Java and them? Java and those such as functional programming language like Lisp, Haskell, or SQL can be different from the language executed by semantics? After all, we can learn these languages, just need a manual, but don't be happy too early, if a major manufacturer in a market, such as Sun, HP or Microsoft wants to take one of these languages, and develop around it Their next-generation technology platform, you will find that this language will not be updated again; I like to treat Java as a platform; actually Java as a language is only less part of the Java platform. Therefore, I will introduce an important feature as a perfect technical platform.
What is the perfect platform
Comparison, for this topic, you can talk about it very shortly, I chose the latter. Readers who are interested in this may notice that there will be "ily" in the end of this topic, there will be "ily" as the end, you know that it is the meaning of the ILITY matrix (Matrix). In my opinion, as a perfect technical platform should have these conditions:
l Easy to develop, and provide multiple access (see the discussion below)
l Stability, this reflects that it should facilitate the deployment of the customer platform; it should also be the deployment operation of the localization mode.
l Must have a reliable performance and testability.
l On the open standard.
Does Java meet these standards?
Now I have defined a series of standards and features that meet the perfect technical platform, let us see if the Java's growth process meets the above characteristics.
I have to admit it to the development of the Java program is not easy. Relatively simple items are ok, but if the project grows more and more complicated, it will continue to have more and more problems. Such as J2EE applications are like this. Therefore, programmers need to spend more time in the development of the project to track the underlying problem - such as classloading, rather than solving practical business logic issues; there is a lot of programmers headache EJB (view I have passed the article to EJB, or Not to EJB?), Usually they are all cleared a series of warning information. EJB may simplify complex problems, but it does not have more close to persistent issues or business logic solutions, which is also related to the shortcomings of Java development tools. Frankly, Microsoft's Visual Studio is better than Java in this regard, Java should learn from it.
I have proposed a multi-level visit idea that allows developers or users to work at different levels in Java. For example, the core developers may develop and deploy as a Java-based system using Emacs / VI to command line modulators, while business analysts or end users should access and modify this system by using tools such as Wysiwyg.
Java is not easy to develop in these two aspects. Of course, Applet and JavaWeb Start technology have improved in this regard, but both technologies have their own shortcomings - running them must configure JRE on the client. The Java platform wants to be stable, I don't remember the last time because Java itself brought me what is going on. So if I want to make an enterprise application, I would rather choose J2EE instead of .NET.
The application of Java on server is stable and robust. The application performance of the SWING client is also good, but in terms of execution speed, it is better than the local application. Due to resource restrictions such as mobile phones (or intelligent terminals), if Java is used, it is a little extravagant from a locale with a localized development tool. Additional additional MIDP loading results in the performance loss of runtime compared to the local application. Obviously, Java has a wide range of support from the industry's main software vendors (except Microsoft). For example, IBM, HP, Oracle has put their own technology to the Java platform, which is a good news for people who care about Java. More organizations and group spend a lot of energy constantly improve Java, they want to see Java's continuous growth and progress in various fields such as mobile devices, PCs, and servers.
advantage
Where is the advantage of JAVA?
l Platform support: J2SDK can be run on any operating system and hardware platform, from financial institutions to entertainment facilities, Java can be used from scientific research to household computers.
l Java language specification and a clear separation of Java runtime specification allow researchers to generate mapping of programming by running a compiler, without having to use Java to compile binary code - that means of it can run in any virtual Machine (VM). This is very important to change the change in the Java strategy that I will mention later.
l Java is a platform for pretty maturation and stable platforms in today's enterprise-level computing and applications. Microsoft is still constantly improving their .NET, and may eventually be as good as Java or better than Java (but this is only limited to the Windows platform), but now there is still no change; in addition, there is another competition The field, that is, mobile device. Although we mentioned earlier, Java is relatively poor in saving equipment resources, but it is undeniable that it also occupies a leadership in this area.
l Java has also gained strong support in the academic community. If you study at university you will find that Java has become a preferred language of most scientific research and calculation. More and more people in the university are using Java language, more and more cutting-edge academic research fully use Java language; companies in various industries have a lot of Java programmers to develop their projects.
Disadvantage
Now let's take a look at the shortcomings of Java:
l A development organization creates a new framework and component library almost always existed while there is an advantage. An excellent component technology is always growing in different developers and organizations. But in this process, it makes the user (specifically the developer) is very confused. Although Sun has been busy paying, it is better to use JDO or EJB. Indeed, we must determine which one will continue to develop. Now we can make this idea to submit this idea to the JCP organization. For example, if you are a J2EE designer, can you determine which one is the perfect solution? I can't, but my point is "" The actual program is the perfect program ".
l There is now a point of view that Java is too complicated. Does any know all the knowledge of Java from all aspects of the server to PDA? As a profound language, Java is everywhere in different fields of people's lives, which inevitably brought its complexity, but this is also more worthy of developers using Java on its platform to develop different applications. One of Sun's words is "Hey, we have given you a great core technology. Now you can use it to create any development tools or robust products." Among them, it is an example. Sun own uses this technology as an academic research tool, it has little technical defect. In fact, the programming model based on JavaSpaces may be one of the simplest and most powerful technologies.
l Windows family integrates a lot of cumbersome distributed client platforms. Windows technology will never avoid these shortcomings unless the Java bundled otherwise. Of course, as the Rise of .NET, Java will lose a lot of advantages in the client programming (Thick-client). l I don't think SUN has invested enough financial resources to Java. This brings potential hidden dangers to Java, then why should Sun should continue to invest in the Java platform? I am more happy to see SUN play a "kinderian dictator" through a lot of financial resources, which will guide Java's future through companies such as BEA, IBM, HP, rather than developers or end users. I am worried about the shake of Sun to Java. Sun's robust and stable development indicates the continuous improvement of Java; if Sun has a problem, Java development and improvement will also be affected. The figure below shows several aspects that affect the Java technology platform.
Figure 1 shows the idealized Java technology platform of the high layer. Among them, the technique controlled by Sun and its partner is shown as orange, and others do not belong to green.
figure 1
What shortcomings have java?
Undoubtedly, I admit that the Java platform is defective, which must be pointed out. These issues and strategic and tactical recommendations will be described in detail below.
About J2SE
For most developers, who uses Ant as their compilation tool; who uses the JIKES compiler instead of the Javac compiler for performing efficiency. If J2SE contains Ant is not a better? How about xdoclet? The focus of the debate is that these tools should be part of the IDE rather than the core SDK, I am very happy. But I thought SUN should set these tools together to enable them to be installed on the existing SDK.
Optimal product
This is a painful choice. When I mentioned the current Javac, I always felt very bad when I changed the current Javac, but here I treat it as a general rule of the Java platform. The Java platform needs to be a technological authority, for example, it should be a practical technical standard. When there are two robust norms or tools, they should merge with each other. For example, a more prominent example, NetBeans-Eclipse competes between each other, we should only leave one of the best.
I use Eclipse, but why we have to use two Java IDEs in a project, and have to make them harmonize to work, but can't have a merged tool that combines the advantages of each tool. Eclipse's SWT is superior to Swing / AWT in execution efficiency, and NetBeans has good support to JSP, which makes the developer's work easily.
SUN: A consistent technical message!
Think of the persistence architecture: EJB (BMP and CMP), JDO, and Hibernate. There is also a Struts and Webwork in the web architecture. These are good choices for a company. But it is hurting between them. As a system designer, I have reason to make a choice. For example, what is the ideal J2EE architecture? A simple response person "It depends on the needs", but this is evade the problem. A three-tier set of enterprise applications include display layers, business logic, and persistent layers. For those mentioned above, we should might choose one of them or may be two kinds.
As a business, you will also encounter problems with the application server. I am very happy to see that there are many manufacturers' application servers support J2EE1.3 specification, but I think the preferred application server should have the following conditions: it should be able to reduce the difficulty and workload of development and meet complex tests To provide simpler group control support. Suppose I encounter a bug or simply in the process of use, the manufacturer of the application server is closed, so I should allow me to be easily ported to the new server platform according to the J2EE specification.
The new specification and application implementation makers are obliged to create an application design blueprint, which is to indicate what this application is further developing. A new point of view about Java: Let everything simple
James Gosling at the James Gosling in the 2002 JAVAONE Congress said that the Swing API is like a driver of the Boeing 747, whether it is a driver of the Boeing 747 passenger plane.
Talking about this, I think that solving this type of problem is the principal of Sun, JSR, and those open source projects, they should reduce the complexity of software. Whether it is specifically API, software installation mode or equipped document, etc. should be in accordance with this principle.
Java World needs to adopt KISS's views, that is, keep it simplified, foolified (Silly).
Select Windows as a platform developed as client development
This point of view may bring debate! Done said, Java did not have much impact on the Windows platform, isn't it? In fact, I think SWT of the Eclipse project on the Windows platform is forcibly used localized appearance styles and operating environments, and combines with Windows clipboard and OLE mechanism.
Don't misunderstand what I mean. I am not saying that Java should support the Windows platform and ignore other platforms such as Mac or Linux. I said that support for Windows platform should be paid and strengthened. For example, www.java.com has made progress in this regard, but there are still many things to do.
Take the foundation of the Java platform as other technologies
I greatly appreciate Java to separate its semantic part and runtime environment (JVM). This can make Java adapt to any development. Ideally I hope that other technologies can be seamlessly combined with Java (translator: such as JPYTHON is an example).
JCP "Lite"
Java Community Process is a organization that allows Sun to play a "kinderly dictator" role that guides the continuous development of the Java platform, other individuals (including companies or individuals) can add new to the Java platform. Function.
However, now, the development of J2ME, J2SE, and J2EE specifications has huge hindrances in JCP, and these hinders are caused by individual manufacturers for business considerations or political purposes.
Each JSR specification generally has two versions: one is what we now see is the other is approximately 50 pages of specialty for developers, they must use and understand and ultimately achieve this norm.
Figure 2 lists the shortcomings and corresponding solutions of current Java.
figure 2
in conclusion
So, how about Java now? With a conventional saying "as long as you work, it will be better." Java has potential to become a platform that is very successful from any field of PDA to server. Java can continue to develop in its dominant server. It is also possible to successfully obtain Java successfully by optimizing the publishing and installation of client programs.
Regardless of the current situation, I believe that Java has the ability to become a perfect platform. Through continuous improvement, reduce the difficulty of developers, provide support for all platforms and operating systems, as well as providing support for more languages, and the Java platform will adapt to the development of any hierarchy. Through the optimization of the client platform, Java will also achieve huge success in the field of PC and mobile device.