C# and Java Language History and Evolution

This post will describe C# and Java language history and evolution


 C#

 Microsoft earlier implemented a modified version of Java, which was called J++ and a modified version of the Java Runtime Environment (JRE). In 1997, Sun Microsystems sued Microsoft, stating that Microsoft added new features in a manner that contravened Sun's standards and conventions for Java platform neutrality, and which features therefore violated the license agreement between Microsoft and Sun. The suit was settled in 2001: Microsoft agreed to pay Sun $20 million and gradually phase out the Microsoft JRE over seven years.
 At time of the settlement Microsoft had already revealed the first version of C# which was based on .NET as opposed to the JRE. While developing C#, Anders Hejlsberg's team at Microsoft studied a number of existing languages including C++, Java, Modula-2, C and Smalltalk. The most notable differences was the C# support for delegates and events, metadata attributes/annotations and the way programs could call into the underlying platform. C# delegates and events supported the same use cases as the Java anonymous and local classes, i.e. support for event-based programming and callbacks. When calling into the underlying operating system, C# "Platform Invoke" relied on marshalling controlled by metadata attributes as opposed to the external glue code required by the equivalent Java Native Interface(JNI) in Java.
  •  C# 2.0         Introduction of generic types, closures in the form of anonymous methods as well as generator methods, partial classes and methods.
  •  C# 3.0         Added SQL-like language integrated queries suited for querying data from collections, databases or XML documents, building upon general-purpose language features, including lambda expressions and extension methods, to allow queries to be expressed and optimized for user types.
  •  C# 4          New features from dynamic scripting languages such as Ruby and Python.
  •  C# 5          Focused on improving language support for asynchronous and parallel/concurrent programming by making asynchronous continuations a first-class language feature through the new "async" and "await" syntax.
  • C# 6           Compiler-as-a-service, Exception filters, Await in catch/finally blocks and many more.
  • C# 7            Local functions, Tuples, Pattern matching, Records / algebraic data types, Nullability tracking, Async streams and disposal, Strongly typed access to wire formats .
For more detailed description of the versions and their features visit the Wikipedia website.        

 Java

Java predates C# by 7 years, being first released in 1995, it has been implemented and freely distributed as the Java Runtime Environment (JRE) on a wide range of platforms, including mobile browsers. By contrast, C# and the .NET framework (Microsoft's equivalent of JRE) are primarily based on Microsoft Windows-based platforms. The Mono project has made C# and .NET available on Linux since 2004, this open-source effort is independent of, and not tightly coordinated with Microsoft's development efforts, this lead has translated to a larger user base, and quite a few open source third-party libraries being developed.
 Compared to C#, Java versions have evolved more slowly with respect to features. This conservative approach to language change has consequences that may be both negative (slower evolution to meet perceived programmer needs) and positive (less risk of prematurely adopting approaches that might later prove to be dead-ends). It is now fair to say, however, that while C# was originally designed to be highly similar to Java in many respects, recent versions of Java (notably version 5.0) have in turn implemented ideas originally implemented in C#, such as the for-each construct, auto-boxing, methods with variable number of parameters (varargs), enumerated types, and annotations.

 The different releases of (Java Development Kit)JDK with various new features that had been added with each release.

           Release        A couple new features
  •  JDK 1.0        Creation of packages with classes in the standard library
  •  JDK 1.1        An event delegation model for Graphical User Interface (GUI) package AWT, JavaBeans, and Java Database Connectivity (JDBC) API
  •  JDK 1.2 (Java 2)      A new graphical API, named Swing. Also added APIs for reflection and collection framework (based on data structure)
  •  JDK 1.3        A directory interface to lookup for components, named, Java Naming and Directory Interface (JNDI)
  •  JDK 1.4        Included regular expression API, assertions, exception chaining, channel-based I/O API, an XML API for parsing and processing
  • J2SE 5.0        New language feature in generics, Metadata, Enumeration, Autoboxing, Varags and static imports
  • Java 5           With Up to 22 updates, provided major bug fixes
  • Java SE 6      GUI improvement, Improved web support through JAX-WS, Scripting language support, with up to 113 updates majorly providing security fixes.
  • Java SE 7      Improvement to standard libraries and up to 101 updates
  • Java SE 8      With Up to 92 Updates, provided annotation on Java type, Date and Time API and several other features
  • Java SE 9      Provided the Java shell
  • Java SE 10    Money and cash API
To view a more detailed documentation of the new releases and new features of Java visit the Wikipedia website.

A major difference between them is that C# common language runtime  (CLR) processes the MSIL(Microsoft Intermediate Language) on the .Net framework while java uses a virtual machine or JRE(Java Runtime Environment) to convert the code to machine language which makes it platform independent.

Comments

Popular posts from this blog

Firebase Test Lab for Android Robo Test

Differences between C# and Java cont'd -- Variables and operators