Summary:
The first is to make an analysis on the composition of the Java and .NET platform, then I have aware of how I have formed Java, followed by analyzing the cooperation between Microsoft and Sun, and finally the prospect of Java and .NET cooperation.
I personally strongly believe that Java and .NET will gradually unify the future. There are many project plans to integrate Java and .NET to be submitted to source open organization. In Microsoft's MSDN, Sun's Java site, as well as standard documents from ECMA and W3c.org, you can see the relevant content.
Introduction
Java and .NET continue to develop, two of the possible two results: one of which exits competition or two coexistence, while coexistence is more likely. The reason for Java's survival is its time advantage: it has developed six years; it can operate on most operating systems; it has been supported by industry leaders such as Oracle, IBM; and use Java project plan Almost override all applications.
And .NET's advantage is that Microsoft has a 90% desktop operating system market, and Microsoft has also begun to adopt Sun's market strategy to standardize its unique technology. Such as: on a remote communication it submitted to the IETF (InternetEngineering Task Force) and W3C (World Wide Web Consortium) the SOAP (SIMPLE OBJECT ACCESS PROTOCLE) (similar to the RFC-REQUEST FORCOMMENT); submitted to the ECMA (European Computer Manufacturer's Association) C # Language and General Runtime Basic Structure.
Java platform architecture
The Java platform includes Java language, as well as a virtual machine, such as JVM, KVM, CVM, etc. - byte code code running Java on a PC, a laptop or an embedded system. At the same time, the Java platform also defines a wide range of coverage APIs, which are used to coordinate with Microsoft's API or compete with each other. Such as JDBC for ODBC, JTAPI to TAPI, JDO, etc.. Therefore, briefly, the Java platform includes language, virtual machines, and API libraries.
Since the virtual machine mechanism is used, the Java language is only a unique version on all platforms, so it uses RMI (remote method calling the Remote Method Invocation protocol) protocol to remotely communicate; Microsoft uses DCOM in the .NET framework - progressive evolution For SOAP (Simple Object Access Protocol).
Sun initially promoted Java's publicity "one-time code writing, running in all environments", but has to recover its initial after the launch of "J2EE" (Java 2 Enterprise Edition) and "Java 2 Micro Edition) Propaganda, because "a size of the shoes suitable for all feet" solutions don't work well.
.NET platform architecture
A series of languages such as C , VB.NET (VB 7.x), and C #; a set of runtime environments similar to Java virtual machines; and a set of API interfaces that tend to be with Windows systems. The runtime environment may exist in a browser, or a web server or in the operating system. There may be such a runtime environment in the future in SQL Server. In addition, it is necessary to mention Microsoft's SOAP protocol, which develops based on some of the characteristics of DCOM, and transmits via HTTP based on the XML format. SOAP's Java version, you can see its related documentation on http://xml.apache.org. development path
Java originally derived from a set of SUN for set-top box design, the name of Oak, Sun will be renamed, and put it on the Internet as an open source sharing. As the Java Applet specifically designed for web pages, Java languages quickly spread on the Internet. The browser at the time was mainly Netscape. When Microsoft discovered that the dominance of the market may be a browser instead of a desktop system, it began to buy Netscape to acquire, and Microsoft developed its own browser IE after the acquisition plan failed.
The Internet requires a language, while Java appears, due to many of the similar grammar of C , makes many programmers to Java. It does have a lot of advantages, so that in the autumn of 1998, its opponents have declared that Java is the best language to write COM components.
As Java, there is a Linux operating system and Apache server. The three joint applications showed powerful power in the server-side application, and the Windows NT has been greatly impacted in the enterprise server market.
98 years of DHTML and JavaScript have led to the fade of Java Applet in the field of web design, there are two factors here: one, most Applet effects can now be done by DHTML; Second, while DHTML is lower than bandwidth. But Java has continued to develop because there are still markets in the server-side applications. This is the supporter who developed the source code to add vitality to Java, first of all, Serverlet proposed by Apache and later JSP, which will occupy a place in the .COM website.
The Java platform first uses Serverlet, then JSP, and finally EJB (Enterprise Java Beans), gradually expands to enterprise applications. EJB is an object-oriented transaction process system, some similar to Microsoft MTS (Microsoft Transaction Server). In fact, MTS and EJB are not very successful because they can't reach the size of the Internet application.
In my point of view, Java's most failure moment is that Sun has lost $ 20 million through legal means, and it is successful. Microsoft started its own .NET program since then, and also announced the end of Java as the status of the unique Internet platform.
Look forward to
Now, we can see it is just a very confusing situation. In the future, we will see the maturity of .NET, and the integration of it and Java.
Java will continue to maintain its feature: cross-platform server-side applications, such as WAP servers, or Telecom, such as Jain (Java API for Intelligent NetWorks, which will continue to maintain its advantage in embedded systems, like smart cards, Mobile phone, PDA, etc. We will also see the maturity of .NET, of course, this maturity takes time, it may be a long time, just like Java growth.
Oracle 8i and its older version, act as a carrier of Java runtime, which makes Java to be closely integrated with the Oracle database engine; the same, .NET system will also closely combine with the new version of SQL Server, This will include a VES (virtual execution system) execution engine. This will enable program developers to embed C # and VB.NET in SQL statements and stored procedures. Currently, you can use the extended stored procedure by calling the DLL function, but the database itself does not match the object-oriented runtime engine. Future logo. Net mature milestones
Non-Microsoft products, including server, desktop, or portable device, such as Solaris, Linux, and Palm OS .NET interface. Integration with Java core. For example, the Java compiler for the CLI (Common Language Infrastructure), the C # compiler of the Java virtual machine. SQL Server or the integrated VES engine in database products such as Oracle. Open source, perfect .NET platform developed by neutral third-party.
It can be foreseen that Microsoft will sponsor some open source projects to extend .NET to the UNIX platform, which will help some open source organizations reduce their favorite for Java.
Java's fate
One of Java's main goals is communication equipment providers, such as NOKIA, just applying Java in its WAP Server. Similar to the 70s and 1980s, hardware suppliers were sold to the operating system when the PC sales was sold together in the operating system, and Java is now also bound to the communication device.
Its another main direction is Jain (Java API for Advanced Intelligent Network), which is mainly defined to define an API that is independent of protocol (such as CDMA, GSM, IMT2000) to facilitate the development of components based on open market. This allows ISV (independent software vendors) to provide communication services in plug-ins, such as automatically transferred to the most recent Volt International Call Center 800 free call. Of course, Jain also encountered an opponent, thinking of Microsoft and British communication proposed PARLAY program - it was also supported by the industry.
In addition, Java also maintains a leading position in embedded devices, such as Smart 3G and GPRS, the mobile phone system here is J2ME (Java 2 Micro Edition), but if it does not solve some inherent problems If the latency of load, maybe, soon, it will be replaced by C #, if .NET can provide a fast running environment, and a wide industry support.
.NET and JAVA integration
Regardless of the business perspective, or the developer's angle, even the angle of the source open organization, .NET and Java's integration are necessary, and the integration of the two makes an advanced estimate (all relevant projects are divided into A, B, C three groups in order to see the relationship between them, of course, these projects can be fully operated):
JVM to CIL Compiler (Group a)
Java API Bridge for .NET API and LIB. (Group A)
Java Compiler for CLI (Group A)
CLI Ports for Palm OS, Linux and Solaris (Group B)
.NET API AND LIB. Bridge for Palm OS API (Group B)
.NET API AND LIB. Bridge for POSIX (Group B) CIL Compiler to JVM (Group C)
.NET API AND LIB. Bridge for Java API (Group C)
C # Compiler for JVM (Group C)
Group A project
The main purpose of this group is to enable existing Java binary code to be executed on the .NET platform. This means that Java's binary code (the suffix of Class) can run in the .NET platform without recoiling from the source code. Of course, these Class files are compiled when installed or executed, as if Microsoft's runtime and JIT do it.
JVM to CIL Compiler
A compiler, enter the Java bytecode, output the MSIL code - it will be compiled as an executable (such as EXE, DLL, MSI, etc.)
Java API Bridge for .NET API and LIB
Here, the Java API will create a mapping between each corresponding .NET API, such as java.io.file in the Java API will be mapped to the .NET's System.IO.File class. Compared to a relatively simple map, there are also some mappings that are more complex, such as the SYSTEM.NET of the Java.net to .NET. One of the problems here is that if the work will be developed in C # is more convenient. If implemented in Java, you need to have a compiler directly point to the CLI (Common Language Interface), which can generate a CL (Common Intermediate Language) code that conforms to the CLS (Common Language Specification) standard.
You can avoid some cumbersome work, for example, you can use C # or Java to write an object description based on an XML format, use it to generate a frame code, and then handwritten to add other code as needed. If you do intend to do this, you can find a lot of useful information at http://xml.apache.org site. Similar tools have similar tools for reference - a tool to generate a JDirect (JDirect WAS The Microsoft's Hack For Implementing Native Interfaces) code, which utilizes it to access the local Win32 API. Source code for this tool in the SDK. By the way, since Microsoft's unique Java extension marker is involved here, Sun and Microsoft have always played the lawsuit on this issue.
Java Compiler for CLI
It compiles the Java source code (using .NET Framework API) to the format of executable, such as EXE, DLL, etc., this work is integrated with Java and .NET framework on the highest level. This will use Java to create an application to make a good foundation under the .NET framework.
Rewinding some of the code generation part of the existing Java compiler will be a relatively convenient solution. As far as my personal opinion, Sun will develop such a compiler according to the standard of open source. Of course, such some transformation plans need to be adjusted to some Java classes.
Group B project
The group's project will focus on developing the port of the .NET framework for other platforms such as Palm OS, Solaris, and Linux platforms. These ports should be written with C to accommodate speed and control, and also use C to develop system-level programming for operating system-related system-level programming.
CLI Ports for Palm OS, Linux and Solaris. This part is in fact divided into two separate parts: 1. For Palm OS; Second, for UNIX systems.
For Palm OS, the solution is relatively simple, development can be performed in a PC environment, then transferred to a Palm device using a data line or Bluetooth. The API associated with it will be detailed in the next part for the API designed for the Palm OS.
The UNIX section will use Java development, and finally compile the PE (Portable Executeable file as a Coff (Common Object File Format format, a format of a UNIX executable file. Compiling will be done when installed or loaded.
.NET API AND LIB. Bridge for Palm OS API.
This .NET API Bridge should be mapped to the Palm OS API in a way of an optimized manner. The mapping table of the connector and the loading device resides on the gateway of the PC. Transfer the executable code of the Palm OS through the data line or Bluetooth. Its implementation will rely on Palm OS's resident virtual machine KVM (The Java 2 Micro Edition) running, and it should also avoid defects in Java running program in KVM design. In addition, this set of APIs is different from WINDWOS CE, which should not abandon those API icons that take up larger API like System.xml. .NET relies on SOAP to remotely call. SOAP is based on XML format, so it requires SYSTEM.XML support. If not, SOAP-based distributed applications will not work. The remote operation of the PDA such as Windows CE and PALM OS or some server-side applications can be implemented by calling the System.xml API. Even the WBXML (WAP Binary XML) standard designed for WAP (WiReless Access Protocol) is used to communicate with the WAP gateway on the basis of SOAP.
.NET API AND LIB. Bridge for POSIX.
This part will mapping the .NET API and UNIX API, a large number of C's programming will be a difficult, but greater difficulties will come from the process of the GUI element. These UNIX platforms will have a lot of GUI frameworks, and more secure is to provide them with a port of Win32 API as a medium. If you can make a mapping operation with the method of the Microsoft Java SDK described in previous text, a large number of programming work will be saved.
Group C
The content of this part is committed to using the .NET framework to Java. This will be a hard work. Of course, if Microsoft submits a standard specification to ECMA, this work will become more actual.
CIL Compiler to JVM
The project will convert the .NET execution program (PE) into a .class format file. But if there are some non-managed code in the execution program, JVM will not accept them. The implementation of the project relies on the implementation of the .NET API Bridge for Java will be described below.
.NET API AND LIB. Bridge for Java API.
A completely compatible .NET API Bridge is almost impossible, it needs to rely on some of the parameters in the standard submitted by Microsoft to ECMA. This work will be implemented by Java, but like the Java API to .NET Bridge mentioned above, there will be a lot of cumbersome work.
C # compiler for jvm
This work can be done in any one of Java or C #. It is easier to implement to use Java because many of the code of the Sun's Java compiler can be reused. But I recommend using C # to implement the work, and there are many basic compilers in the .NET framework can be utilized. This project relies on the implementation of .NET API Bridge for Java. to sum up
Finally, I am going to integrate .NET and Java more than just Microsoft and Sun's work. All programmers may pay attention to it