Java and .NET - differences are more than syntax

What are differences between Java and C#?
it is a basic question that has been asked almost by all new developers. It also has a lot of basic answers like "search google", "is google down today?!" and others.
Some better answers are "just syntax" C# uses "using" instead of Java's "import" and so on.
and also "they are almost same", both are pure object oriented, both run on virtual environments both have garbage collector, both ............... They are almost same!
But They NOT.

really they aren't not same or even similar.
I want to go further and say they only alike a little in syntax and all other is different.

first, is .NET really platform independent as they proclaim?
I don't think so, .NET framework is only available for Windows and there is no intent from Microsoft to support other platforms. some people talk about mono as a solution but it isn't.
Mono is between .NET 1.1 and 2.0 as declared by its official website (http://www.mono-project.com/FAQ:_General) but .NET is in 3.5 now. what an out of date?!!
so, .NET applications will run only on Windows. Mono will never catch Microsoft .NET framework because Microsoft will never declare all its secrets as we all know.
Another reason is that we all know that Windows popularity is going lower and lower by time because of its huge number of problems and appearing of new stable and efficient operating systems like Ubuntu (http://www.ubuntu.com), so will Microsoft help these other operating systems with mono? I don't think so.

then, let's go to the real difference which is thinking way
yes, the real difference isn't between Java and C# as programming languages and not between Java Runtime Environment (JRE) and .NET framework as platforms. The real difference is between Java developers and .NET developers.

  • Java developers usually think with open source oriented approach but .NET developers usually think in how to sell this code.
  • Java developers usually think with independent way (independent of OS, independent of tools,........) but .NET developers think only on Windows and Visual Studio. they even may not imagine that their code may run on a linux machine with mono. (believe or don't believe : I met some who called developers who don't know differences between C# compiler and Visual Studio).
  • Java developers use different tools from different producers (for example, linux from community, Java specification from Sun, JVM from any manufacurer, TomCat from apache, NetBeans from Sun, MySQL from mysql community and more from more producers), but .NET developers always use Windows from Microsoft, C# from Microsoft, .NET framework from Microsoft, IIS from Microsoft, Visual Studio from Microsoft, SQL Server from Microsoft and even office from Microsoft. and no comment on how thinking is limited caused by working with one strategy from one producer!

and At last, let's talk about open source strategy
some people think about open source developers as idiots. how can you work and spend effort then get nothing?!!
who think that don't know the value of ideas.
when you develop open source software you get more than money.

  1. making work open gives a lot of feedback that helps you getting experience of standards that couldn't be bought by money.
  2. when everyone open his own ideas, all will see others' ideas and others' ways of thinking. and new ideas are much valuable than money.
  3. when you do what you can in open source and all do this, you will get what you need and can't do also in open source. which your money may can not buy it.
  4. open source software respects other developers and users with permitting copying and editing software not using it as it.

I invite you to use open source.

Comments

hello! this is an interesting

hello!
this is an interesting subject, and would have to agree with these points in particular:

1. making work open gives a lot of feedback that helps you getting experience of standards that couldn't be bought by money.
2. when everyone open his own ideas, all will see others' ideas and others' ways of thinking. and new ideas are much valuable than money.

I am looking forward to reading more of your articles....
Stephanie

First, I'd like to

First, I'd like to congratulate you about the blog and hope you bloody fights with your visitors ;) .
Actually, I agree with you that the differences between is beyond syntax or even architecture, the difference is inherent. Though, there is one thing that matters to businesses which is VALUE. if microsoft's closed-source solutions could fill my requirements within a specified constrains why should I bother using java or any other open source software?, I think that the whole process of promoting open source needs a lot of reengineering to focus more on value added to open source adopters.

cheers,
remon | www.rgeorgy.com

congratulations

congratulations !! your article is very excellent .
i'm one of people who encouraged others to use open sources .
when we see idea's others , we gain a lot of information and experience .
I admire from people who use windows although it's big problems and leave
the os ( LINUX ) that have a lot of advantages .

on the the other hand :
which is the best : when you write code then you can operate in any OS or
operate only in windows ?

I see when you can operate it in any OS - ( java ) has advantge's of plateform
independent

thanks for your article .
well done.

Beshoy

Decision making

I have experienced .net and found a superb platform. But, your eye-opener for Java will help me to focus on Java better.

nice article but another say

nice article but another say look only to java developer as java has good .net also good
every one has advantages and disadvantges
althought we are in 2008 there are people us c++ which the mother language of java and c# .....
plz as u say open your mind to other minds also open ideas to receive other ideas

RE : nice article but another say

I don't speak about .NET as bad platform or about .NET developers as bad thinkers. but I always see .NET developers tied to Microsoft and all what they do is waiting for what is new from Microsoft, they even don't know names of frameworks built over j2ee. I just invite to open thinking to limiting thinking in one vendor strategies and products.
We all must admit that .NET isn't platform independent as many proclaim.
when Microsoft started .NET they declared it is platform independent to attract Java developers and when all know it isn't, they now changed their speech to say Java is one language over many platforms and .NET is many languages over one platform. but Java isn't one language!
Java is a platform before being a programing language and now there are what is called JVM languages, the most famous of them are Java and JRuby and I'm sure there will be more.
The Online Brain | http://www.online-brain.com

Cool. In bookmarks. Just

Cool. In bookmarks. Just thought with it to try something!