A Comparison of .NET Framework vs. Java Virtual Machine

36
VS . Abd El-Rahman Hosny Alaa Attyea M.

description

For developers who love to code. Compare between .NET folks and Java geeks. We are discussing what each platform present with pros and cons of each.

Transcript of A Comparison of .NET Framework vs. Java Virtual Machine

Page 1: A Comparison of .NET Framework vs. Java Virtual Machine

VS.

Abd El-Rahman Hosny Alaa Attyea M.

Page 2: A Comparison of .NET Framework vs. Java Virtual Machine

Agenda- Previous State of Affairs.- Introduction to Java• Compilers vs. Interpreters.• Platform-Dependency.• Hybrid Compiler-Interpreter.• Java Components (JDK).• JIT Solution.

- The .NET Solution• CLR, CTS and CLS.• Base Class Library.• .NET Sons.

- What’s Next?!

Page 3: A Comparison of .NET Framework vs. Java Virtual Machine

Punched Cards

- Piece of paper, that contains digital information.- Information is represented by the presence or absence of holes

in predefined positions.

Previous State of Affairs ..

Page 4: A Comparison of .NET Framework vs. Java Virtual Machine

Previous State of Affairs .. Assembly Programming

- More readable for programmers.- Consists of machine instructions.- Each computer architecture has its own assembly commands.- Reduced Instruction Set Computing (RISC).- Complex Instruction Set Computing (CISC).- Using assembler: assembly code => executable machine code.- However, still a low-level programming language.

- High-level assembler for assembly languages that have some high-level programming features.

Page 5: A Comparison of .NET Framework vs. Java Virtual Machine

Previous State of Affairs ..

Page 6: A Comparison of .NET Framework vs. Java Virtual Machine

Previous State of Affairs .. C/Windows API

- To develop software for Windows operating systems, we use C programming language with the Windows application programming interface (API).

- Large number of applications already created with this approach.

- However … Manual memory management.Ugly pointer arithmetic.Spaghetti code (thousands of functions & data types).

Page 7: A Comparison of .NET Framework vs. Java Virtual Machine

Previous State of Affairs .. C++/MFC

- Object-oriented layer on top of C.- Benefits of OOP (Encapsulation, Inheritance, Polymorphism)- Microsoft Foundation Classes (MFC) are set of C++ classes

that facilitate building Windows applications.- MFC hade the underlying Windows API and provide classes,

macros and code generation tools (wizards).

- However …Backward compatibility with C makes it prone to the same problems (memory management, pointers, constructs).

Page 8: A Comparison of .NET Framework vs. Java Virtual Machine

Previous State of Affairs .. Visual Basic 6.0

- Programmer is now able to build complex user interfaces and code libraries.

- Can access databases easily.- Hide Windows API by using code wizards, VB data types,

classes and VB-specific functions.

- However …Not fully OO (rather it’s object-based).No is-a relationship (No inheritance).No Multi-threaded applications (actually we can use lower level APIs.

Page 9: A Comparison of .NET Framework vs. Java Virtual Machine

Previous State of Affairs .. COM

- Stands for Component Object Model.- Microsoft’s previous application development framework.

- “If you build your types in accordance with the rules of COM, you end up with a block of reusable binary code”.

- Language-Independent.- ATL ( Active Template Library) provides a set of C++ classes,

templates & macros.

- However … Complex Data Type representation

Page 10: A Comparison of .NET Framework vs. Java Virtual Machine

The Move ...

Page 11: A Comparison of .NET Framework vs. Java Virtual Machine

What is a program & how it runs ?!

Source code and native bits:

- Source code a series of related commands of specific programming languages.

- Actually source code is not what runs on our machines.

- Machines knows only it’s native language (0s&1s).

- Source code must be translated in some way to the machine native language.

Page 12: A Comparison of .NET Framework vs. Java Virtual Machine

Compilers Vs interpreters :

- Compilers and interpreters and some software that acts as a translator between you (high level language) and the machine (low level language).

- Actually compilers and interpreters are totally different in the ways how they treat your code.

- Let’s take a look about how they are working.

Page 13: A Comparison of .NET Framework vs. Java Virtual Machine

What is interpreter ?!

- Interpreters doesn’t behave like compilers.

- It do not translate any programming commands, it takes the code and executes it line by line.

- Examples for interpreted languages PHP, haskell, aslo shell command in linux are interpreted.

Page 14: A Comparison of .NET Framework vs. Java Virtual Machine

Platform dependent problem:

- As there are different computer architectures there must exist different compilers to translate the code.

- Here w have the platform dependent problem.

- However … There another solution for that problem called, hybrid compiler-interpreter.

- In this case first there will be intermediate code, which will run over the interpreter and we’ll get the result.

Page 15: A Comparison of .NET Framework vs. Java Virtual Machine

Hybrid Compiler-interpreter:

Page 16: A Comparison of .NET Framework vs. Java Virtual Machine

Java solution and the power of Java:

- Java has the same solution about that issue.

- After we have written our source code, when we compile it using the javac command, it will generate the intermediate code or what is called byte code.

- This will be at the form of (.class) file.

- JRE can be responsible for running and executing the .class file over the machine.

Page 17: A Comparison of .NET Framework vs. Java Virtual Machine

Java components:

- The first step to write a java program and run it is to set up something called JDK (Java Development Kit).

- This includes three main component for java• JRE (JVM is a part of it).• Java compiler (javac).• Java debugger.

- With the help of these component you can run your code wherever and whatever the architecture or platform of your machine.

Page 18: A Comparison of .NET Framework vs. Java Virtual Machine

- After the programmer have written the source code, he’ll use the javac to compile the (.java file)

- Then the javac will create an intermediate code that is known as (.class file) or byte code.

- This byte code can run over any JVM regardless of the machine architecture or platform.

How the Java Program Runs ?

Page 19: A Comparison of .NET Framework vs. Java Virtual Machine

- It is a set of dynamically loadable libraries that java application uses at run time.

Java Class Library

Page 20: A Comparison of .NET Framework vs. Java Virtual Machine

JCL serves three purposes within the Java Platform:

- They provide the programmer a well-known set of useful facilities.

- Provides an abstract interface to tasks that would normally depend heavily on the hardware and operating system, such as network access and file access.

- Some underlying platforms may not support all of the features a Java application expects. In these cases, the library implementation can either emulate those features or provide a consistent way to check for the presence of a specific feature.

Page 21: A Comparison of .NET Framework vs. Java Virtual Machine

JIT:

- Java uses different ways to generate machine the machine code.

- There is a way to produce efficient machine code called JIT (Just In Time compilation).

- JIT compilers promise to improve the performance of Java applications.

- Rather than letting the JVM run bytecode, a JIT compiler translates code into the host machine’s native language.

- Thus, applications get the performance enhancement of compiled code while maintaining Java’s portability.

Page 22: A Comparison of .NET Framework vs. Java Virtual Machine

Java Garbage collector:

- Objects are created in the heap.

- Garbage collector looks for those objects that are not referencing and memory location and reclaim the heap from those objects.

- Garbage Collection in Java is carried by a daemon thread called Garbage Collector.

Page 23: A Comparison of .NET Framework vs. Java Virtual Machine

- Interoperability with existing source code.

- Support for many programming language.

- Common run-time engine shared by all .NET-aware languages.

- Complete and total language integration.- Comprehensive base class libraries.- No COM.- Simplified deployment model.

The .NET Solution

Page 24: A Comparison of .NET Framework vs. Java Virtual Machine

.NET Building Blocks

CLRCommon Language

Runtime

CTSCommon Type System

CLSCommon Language

Specification

Page 25: A Comparison of .NET Framework vs. Java Virtual Machine

CTS (Common Type System)

- CTS Specification fully describes all possible data types and programming constructs supported by the run-time.

- CTS specifies how these entities can interact with each other and how they are represented in the .NET metadata format.

- Some .NET language might not support every feature defined by the CTS.

Page 26: A Comparison of .NET Framework vs. Java Virtual Machine

CLS (Common Language Specification)

- CLS is a set of rules that describes, in detail, the minimal and complete set of features a given .NET-aware compiler must support to produce code that can be hosted by the CLR, while at the same time can be accessed in a uniform manner by all languages that the .NET platform support.

- CLS is a subset of the full functionality of CTS.

Page 27: A Comparison of .NET Framework vs. Java Virtual Machine

CLR (Common Language Runtime)

- The CLR locate, load and manage .NET types on your behalf. - Memory Management (Garbage Collector). - Application Hosting.- Handling Threads.- Security Checks.

Page 28: A Comparison of .NET Framework vs. Java Virtual Machine

CLR (Common Language Runtime) .. cont.

- When an assembly is referenced for use, mscore.dll is loaded automatically, which loads the required assembly in turn.(MS Common Object Runtime Execution Engine).

- Creating the required custom types.- The key assembly is the mscore.dll, which contains a large number of types, that

encapsulate a wide variety of common programming tasks as well as the core data types used by all .NET languages.

Page 29: A Comparison of .NET Framework vs. Java Virtual Machine

- In addition to CLR and CTS/CLS specifications, the .NET platform provides a base class library that is available to all .NET programming languages

Base Class Library

Page 30: A Comparison of .NET Framework vs. Java Virtual Machine
Page 31: A Comparison of .NET Framework vs. Java Virtual Machine

- CIL: the same as Java bytecode, it’ not compiled into platform specific instructions until absolutely necessary.

- You can view the CIL code of any assembly using either:ildasm.exe or using Reflector.

Page 32: A Comparison of .NET Framework vs. Java Virtual Machine

- Metadatadescribes, in detail, the characteristics of every type within the binary.

- Manifest:The current version of the assembly.Culture information (localizing string & image resources).List of externally referenced assemblies that are required for the proper execution of the program.

Single-File assembly vs. Multi-File assembly.

Page 33: A Comparison of .NET Framework vs. Java Virtual Machine
Page 34: A Comparison of .NET Framework vs. Java Virtual Machine

- Applications running in a managed environment tend to require more system resources than similar applications that access machine resources more directly

- Managed byte code can often be easier to reverse-engineer than native code.

- The .NET Framework currently does not provide support for calling Streaming SIMD Extensions (SSE) via managed code.

- While the standards that make up .NET are inherently cross-platform, Microsoft's full implementation of .NET is only supported on Windows.

Criticism

Page 35: A Comparison of .NET Framework vs. Java Virtual Machine

Contact Us !

AbdelrahmanHosny.comAlaaAttya.wordpress.com

Page 36: A Comparison of .NET Framework vs. Java Virtual Machine

Questions