C# From a Java Developer's Perspective
Posted by
timothy
on Mon Nov 19, 2001 03:30 PM
from the curve-before-a-meeting-of-lines dept.
from the curve-before-a-meeting-of-lines dept.
Microsoft's C# has raised eyebrows, interest and debate since its official announcement last year. The prolific Carnage4Life (Dare Obasanjo) has completed a detailed comparison of C# and Java, outlining the things that are identical, similar, nearly the same, or completely different between the two languages. If you're considering learning or applying either one, you might benefit by reading this paper first. There are some other excellent comparisons to be found linked from the Open Directory Project as well. Update: 11/20 03:35 GMT by T : Note: here's a mirror; interested readers who mirror the mirror get good seats in heaven.
This discussion has been archived.
No new comments can be posted.
C# From a Java Developer's Perspective
|
Log In/Create an Account
| Top
| 507 comments
| Search Discussion
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Some more information (Score:3, Informative)
Non Portable (Score:1, Funny)
Insert sig here.
how is it... (Score:3, Troll)
Alternate Site For Article... (Score:4, Informative)
PS: Mirrors encouraged, so if you manage to grab it and can host it at a site with beefier bandwidth, go ahead.
The lesser of two evils (Score:5, Insightful)
Although C# does deliver superior integration with Windows and
Just my 2c...
~wally
Re:The lesser of two evils (Score:5, Insightful)
Also, you'll be able to use all the newest 'must have features' that MS tries to shove on the consumer in C#.
For now, I'll stick with Java because it's libraries are much better. Not just the ones that Sun wrote, but more importantly, the ones that other people have written.
Come on now: Have you ever really used C#? (Score:5, Insightful)
Seriously though, have you? From your vague, unsubstantiated, no example posting it sounds like you use and know Java, therefore you can proclaim yourself knowledgable about C#. Your claims about the "bolted on" aspects of C# are particularly suspicious given the "hooks" into Windows are simply objects instantiatable from the .Net Framework (they're not "bolted on": Just like Java you include the unit and create objects from it). If anything C# takes some of the goofy aspects of Java, such as the interoperation with properties via methods, and cleans them up to make an abstract behind the scenes property handling system (ripped straight from Delphi's object pascal I would guess).
Re:The lesser of two evils (Score:4, Funny)
Agreed - but Java at least attempts "write once, run anywhere," (with debatable success) whereas M$ C# attempts "write once, run on Windows XP, with Windows Messenger and a
I have a lot more faith trusting my applications and business to a company that isn't trying to take over every purchasing decision we make. If you have read the fine print that comes with Windows messenger - the other half of
One day your app or service isn't going to run, and all you see in your logs will be "Call Miscrosoft to obtain a license to run C#"
C# and .NET vs. Java Enterprise APIs and tools (Score:4, Insightful)
I spend most of my time in the Java world (I have written 5 Java books, the latest of J2EE, and almost all of my consulting is done with Java.)
That said, C# and Visual Studio.Net are very cool.
Since Java is not my language of choice (hey, I would use Common LISP more if there were more consulting jobs requiring LISP!), I would not be too bothered if I had to use C# and the .Net stuff.
Really, what really matters is finding interesting jobs to do, not the development platform.
I also have high-hopes for interop between the Java J2EE world and .Net using SOAP. (I am working on SOAP support for Common LISP in my spare time so Lis can play nice with .Net and J2EE.)
Best regards,
Mark Watson
Correction (Score:2, Informative)
Standardization? (Score:3, Insightful)
One cannot always tell beforehand how big the impact will be. Small movements have exploded once given a niche to fill... and then die once it was swallowed up by a new contender.
If the benefit of C# is only whats in this article, then I'm not convinced its going to change the world. I'll keep to my "unsafe" code blocks and maintain interoperability with non-Gatesian worlds.
I'll wait for at least a committee for standardization to form for this mess.
Why do I get the sinking feeling (Score:4, Funny)
Or in some ominous "Morpheous" like voice:
"The
Or maybe I'm just reading too much into it... after all, Microsoft is doing it for the good of the community and Developers (developers, developers, dev....).
BWAAAAHAHAHAHAHA...I actually kept a straight face while typing that...heh.
{sniff, wipes tear from eyes..heeeheee}
Re:Why do I get the sinking feeling (Score:4, Insightful)
But will they be standardizing the libraries or just the language (and the CLR for that matter)?
The beauty of Java is that you write your code once to a set of libraries that are available on a lot of platforms. Even if you had to recompile the code on each platform, there would be no problems because there's a standard library to which you code.
But, if only C# the language is sent to the ECMA, won't we have another C/C++/ with different features? The code you write will still be specific to the libraries you choose to use (and thus the platforms those libraries are available).
C# for Artificial Intelligence? (Score:1)
On SourceForge there are already a few rather ambitious Open Source AI [sourceforge.net] projects in the C# language, but there is not yet a Mind-to-C# liaison page, for several reasons.
Since the various C# AI projects are also using a more open and more traditional language along with C#, the projects are being included in the liaison pages for the non-C# languages. Microsoft has such a tainted history of skulduggery, FUD (fear, uncertainty and doubt) and illegally monopolistic practices, that it may be not only unwise but unethical to jump upon any Microsoft bandwagon.
Therefore it seems safer to include the polyglot C# AI projects in the Mind-to-VB [sourceforge.net] and other liaison pages.
Since " Codito, ergo sum " types must give up waiting to trade in VB 6 for VB 7 and migrate instead to VB.Net (q.v.), we AI enthusiasts have some hope that the Microsoft .NET initiative will lead to Internet iMinds advancing the Technological Singularity [caltech.edu] and not merely the Final Take-Over of the 'Net by Microsoft.
C# is really kinda cool stuff (Score:2, Insightful)
....
Of all the MSVC programmers I worked with once they all had a good chance to work with C# they said theyll never write another line of C++ again. For the windows platform it may indeed be great stuff, the one thing that piques my interest is its cross plattform future. MS included help files and other pices parts refrence Linux, no whether its MS or someone like Ximian with their mono project. The C# stuff is definatley cool. native speed and you can writer in any of the dot net languages you want VB C# and yes TCL and PERL have ports to the Dot NET runtimes, heres the deal even M$ says it, from a performance standpoint on a Win32 machine they will all run the same the language choice will be a matter of style.
Some slashdotters out ther perpetually bash MS and I do too from time to time, I run Linux at work and home, but the fact is Im in computers to make money PERIOD, If I could make a living out of racing my motorcycles full time Id never touch a computer again other than to surf for parts or events.
To the ends of making money at computers, C# will do great I am sure , the coders I know that have actually worked with it on a daily basis love it, and to all the NAYSAYERS out there that say "Oh just another MS product to have bugs" sure probably but the wholde of the VS 7 IDE and tools are written in C# , Im sure by the time its released it'll be pretty good. And best of all it will make ME MONEY, I write desktop apps , if its quicker and easier.more interoperable, which it is it has full inheretence.Im all for it. The fact that 3rd parties are already vigilantly porting the runtime to *nix systems tells you its not another Bob
MS languages for the most part run superbly on MS systems, they suppert both sides of the enviroment. Guess what C# is another example, in XP there are already kernel optimization routines for the DotNET stuff,
If you HAD to program and app for a MS system in a MS language, which would you preffer, C++, VB, VFP, well..... Or C# that even C++ programmers who use it on a regular basis say , (and from experience it does) rocks as far as MS languages go.
C# doesn't make any sense... (Score:1, Insightful)
C# basically is a clone (some would say rip-off) of Java with none of the benefits.
The Java world is actually doing very well now. We have a lot of solid Open Source projects (Jakarta, Tomcat). The standards that do exist are very robust (Servlet, standard API, etc) and there is a lot of brainshare here.
There are tons of JVMs available. Can I run C# on Linux? FreeBSD? Solaris?. And if so can I port this code to another alternative non-MS platform? Linux and FreeBSD have had modern JVMs for a while now.
We are also making significant progress on Java integration with GNU/Linux (AKA not the proprietary SUN Java VM but a Free Software VM meeting the same spec level).
GCC 3.x will include support for 1.2 class JVMs (except for AWT but we are working on this). This means that all newer modern GNU/Linux machines will be able to execute Java code.
I liken this to the proprietary SSH vs OpenSSH relationship. There is the proprietary Java VM from SUN which can be used on Windows, Solaris, etc. The Free Software community now has GCC (with GCJ), Jikes RVM, Manta (all OSS VMs), that they can use and still remain free (all of these examples are under the GPL)
No thank you. I will stick with Java.
Kevin
Power of Java, Functionality of Windows (Score:5, Insightful)
I admit that Microsoft is once again trying to dup Java, but, if you like Java and wish to work with platform-dependant API's that do more with Windows than Java, C# is your answer!
As the article mentions, C# has almost the exact same syntax and keywords that Java has (plus PERL's foreach operator...kudos). There is almost no learning curve. You can leverage the functionality of Windows with C# however, and it has great XML support; so, if you've worked with the MSXML parser, you'll have no problems working with XML in C#.
C# deserves a little more credit than many give, at least if you're working in a strict Windows environment. It's worth a look.
That's all I have to say, but I'll pile on the on wood for the flames that will arise!
it's slashdotted...... (Score:1)
Access Privileges (Score:1)
But what if.... (Score:1)
It doesn't have to be based on Microsoft's code, you know. IANACW (compiler writer), but I think that sort of thing can be done. It's only a language. Look at python, or better yet, Jython (or whatever it's called nowadays). A Python byte compiler that creates java bytecode. Surely that can also be done with C#, I think
Or even better (and probably harder to do) would be a C# compiler that creates machine code.
Is this a good idea or is it just dead wrong?
Big companies... (Score:4, Insightful)
I have a feeling that C# will be adopted by Microsoft's technology partners, but why would any firm that has spent time and money moving away from Microsoft products go running back because of a new product offering? Its not the products we're trying to get rid of, its the company.
I'm impressed by C# -- the language (Score:5, Insightful)
We need a modern, productive system for producing new high-performance GUI apps: apps that look and feel as if they'd been written in C++ -- without the crashes and slow dev cycle. I'd give up some of the flexibility of C++ (you can write drivers, create an OS, build a browser, it's a dessert topping AND a floor wax) for something truly optimized for what matters most in creating superb GUI apps quickly and well.
I've had high hopes for Eiffel and some others to evolve into the successor to C++ for GUI apps, but it never happens. The inertia of programming languages is immense.
The next to step up to bat is C#. I like the language a lot and think it lends itself to great dev systems. I'm suspicious of the bytecode aspect, though. ("Faster than compiled!", "It actually is compiled!", etc. Yeah, so why isn't Solaris written in Java?) I'm afraid that aspect will still require that "serious" apps be written in C/C++.
I like even less that it may remain Windows-only. If it does remain Windows only (for all practical purposes), I suspect the blame will belong just as much to MS haters dismissing it primarily out of bigotry as to MS for optimizing it for their own platforms.
I'd like to see the open source community look at it with the same eyes as if it had come out of some smelly hacker's basement.
Multiplatform increasing in importance (Score:4, Insightful)
Servers tend to run Unix or legacy OSes. Embedded devices run Palm OS or a free Unix like Linux or BSD. Phones run all kinds of custom software. The only platform that Windows rules is the desktop, and that market segment just shrunk for the first time in history. How can C# dominate if it only runs on one type of device?
my $0.02 (Score:5, Insightful)
For pure Windows programmers, C# wins there and will probably be picked up by lots of VB and VisualC++ programmers. But people who live in that world are already not using Java. For everybody else, Java seems to win hands down. I think C# will neither be a complete failure nor will it do much harm to Java.
Java vs. C# (Score:1)
Regardless of the technical issues, I think everyone involved in software development should think long and hard before committing to a Microsoft-inspired approach. Microsoft's track record on getting people to buy into platform lock is clear. It is in your company's best interest to avoid Microsoft lockin in almost every case.
One of the saddest things that's happened in some time is the Mono team's committing to C#. It should have been gcj. Shame on them for encouraging the use of Microsoft's platform. IMO, Ximian can be well assured that Microsoft will either change, patent or extend things until Mono is irrelevant in the end - after lots of Open Source energy has been expended on that dead end.
On the other hand, Java continues to gain momentum in almost every area. There are good VMs available on every important desktop platform (as well as most embedded and server platforms). Go forth and code! ;-)
299,792,458 m/s...not just a good idea, its the law!
Interesting, but there's an error... (Score:3, Informative)
In the end, does it matter? (Score:1)
I think you'll see that in the long run VB, VC++ shops are going to use C#, and Java shops are going to run Java regardless of the inherent capabilities of the languages.
w00t? no dynamic class loading? (Score:4, Informative)
I design JBoss, the leading J2EE server and at THE HEART of it is the capicity to dynamically deploy new applications on our application server. I mean that is what application servers are ALL ABOUT.
in fact (plug) in JBoss we go the extra mile and allow you to hot-deploy (dynamically add classes) the server classes themselves, which neither IBM nor BEA, nor Oracle do.
So I was curious to know who would win the
Why? well imagine that ANY time you change your class in C# YOU NEED TO REBOOT THE APPLICATION SERVER, yes, boys and girls that is the simple thing that "dynamic class loading" affords you, without it, the VM is tied to whatever you have at startup.
GEEEEZZZ!
Having used .NET (Score:3, Informative)
The first release of .NET will still be 2-3 releases from full fault tolerance and enterprise level computing. There are alot of complicated processes in enterprise computing and Microsoft's .NET platform as it stands today is far from meeting those needs. Microsoft has yet to define really useful modules and standards for complex processes that span multiple systems which include legacy VMS systems and modern solaris 8 applications.
SOAP is great for simple processes, but it is far from adaquate to handle distributed and transactional processes. Using standards like UDDI is a great step towards easing multi-platform integration. Instead of having different divisions of the same company design different API for publishing resources, it will be easier to have a common way of doing those things. It is not uncommon for financial institutions to store information differently. Take a simple think like address. Some places may store the number in a separate field, while others may replace "jr" with "junior". Anyone who has worked with large mixed environments knows this fact. SOAP is a message centric way of doing things. It is not designed for complex processes. The stuff IBM is building around SOAP is more complete than Microsoft's offering, but then again IBM has been at services longer.
Java all the way! (Score:1)
My take (Score:5, Interesting)
I just recently picked up C# about a month ago. The learning curve from Java was pretty damn low, only with a few different naming conventions and new language constructs. Things such as indexers, delegates, and the like (all of which I feel are positive additons to the language.) The event model, to my surprise, is better than Java.
Then after learning the language itself I started looking into Windows Forms and nearly spooged my pants. Finally Windows progammers get a clean framework of GUI controls with a powerful modern language behind it (ie, not C++ or VB.)
Usually if you wanted to make a powerful Windows app you were forced to use C++ since VB didn't really cut it. Now you can use C#. Complex Windows apps are going to be a whole lot easier to write now, nevermind the fact that they'll be able to do remote method calls via SOAP, and be deployed effortlessly (ie, create a Windows Installer in like 3 clicks or something.)
I have to say, for the stuff I'm writing that I don't need cross-platform compatibility (which I did surprisingly find to work in the case of servlets)