Trouble Ahead for Java
Jeremy Geelan writes "The editor-in-chief of the world's largest journal devoted to Java wonders whether, with the arrival of Microsoft's C# programming language on the scene, Java perhaps has only 5 years or so left to live. Javaland has erupted! This is a little like Bill Gates wondering out loud whether to send Scott McNealy a Christmas card. But is Alan Williamson right? Read this short article and decide for yourself."
All pages on one page here
mp3's are only for those with bad memories
Java is popular because the programmers like it. Java may or may not be long for this world, but I can guarentee you that C# is not going to be what pushes it off the hill.
It's really a funny idea
Des
Perhaps it's time that Sun stopped being such control freaks. IMHO, they've been the biggest problem with Java. They're at a severe disadvantage on the client now that MSFT no longer ship it with the OS, but will have the .Net runtime... most people don't want to download and install Sun's JRE.
Microsoft's C# entry will only cause more competition in the market, and the consumers and programmers are the ones who will benefit. I'd love to see Sun loosen some of their restrictive Java liscensing practices in response to C#, and I think that is just what will happen. Open source wins the day yet again.
-atrowe: Card-carrying Mensa member. I have no toleranse for stupidity.
There are so many Java programmers and so much Java code being produced that it will last a lot longer than five years. People still need Cobol programmers, ok so not mainstream but look how long ago that was designed and despite being crappy it is still here.
But as the article says it really doesn't help when people who should know better say "Java? No one is doing that now. Microsoft is no longer supporting it."
Gates has a lot to answer for.
Kevin
"It's not the cough that carries you off, it's the coffin they carry you off in" O. Nash
haven't they said something like this before?
the problem with C++ was that exactly zero of code was reused, even though it was supposed to be made simpler. Java code actually reuses itself pretty darn well, and last I checked J2EE library just keeps growing and growing, and largely its success is in that.
as for C#, i doubt anyone except Microsoft is interested in seeing more packages of it. it becomes pointless to have non-object code in C# if you are planning to devise a framework for other people to work with.
anyways, if Java only has five years life in it, why would you stake your life on C# of all things? wouldn't you expect that in five years people would be switching to something newer than the love-child of Java and Microsoft that didn't overtake its predecessor and hardly had any advantages except probably back-doors into the Windows kernel?
just my two cents...
I was thinking of how to intentionally fail my drug test... It would make a good memoir story someday.
Take a look here, it's new in JDK 1.4
Cheers,
Ethelred
Everyone wants to be Ethelred. Even I want to be Ethelred.
This article is really light on details, and frankly useless. It seems more like a call-to-arms for Java developers, but it certainly lacks the power of Mel Gibson's speech in Braveheart.
.NET and C# do not - it's more mature, has a large developer base, and it's APIs and technologies are well thought out, spec'ed and documented.
.NET doesn't have anything that comes close.
.NET has going for it is Visual Studio.NET. Like it or not, it's a great development environment, and one that most Windows developers are already familiar with.
It basically is saying that since Microsoft doesn't support Java, Java will die. I'd like to hope that's not the case. Java has some things
As an example, I just started working with JavaMail a few days ago. Within 20 minutes I was reading emails and sending them. Talk about productive!
The only thing for me that
I don't think you realize that there are broader uses for Java (or C#) than embedded scripting in browsers.
... it wont affect a single thing that the majority of people using those languages care about anyway.
I'm a Java developer, and I know quite a few other Java developers and none of us develop applets. It's all server-side application programming or desktop application programming.
Both these languages are nice general purpose tools for getting all sorts of things done, not just doing lame Javaduke animations in your browser.
So, fine, turn it off in your browser
Languages don't really die like that. Look at what happened with Y2K. There's too much invested already, especially in Java. Maybe Microsoft will be able to convince the kids in CS class that it's sexier to focus on C# and not Java. Maybe the number of Java hype magazines on the news stand will be cut in half. Maybe Java won't be as "cool" as it is today (maybe it will be) but it won't be dead.
I'm amazed at the amount of OS/2 crap that I still see, and OS/2 has supposedly been dead for years.
I think you'll find even COBOL programs are still be developed commercially, so to say Java will be dead within 5 years is flamebait.
.Net via C# but I doubt even Microsoft think it will usurp Java itself.
.Net stategy (with C# a small part of their plan)
With C# Microsoft have taken ideas from Java, but C# is isn't Java.
C# is designed to kill of Visual J++, by migrating users to the
Sure Microsoft are trying their best to stifle Java, thats because they feel threatened like some sort of wounded animal.
Microsoft can't rely on Windows and Office anymore as being their core business longterm, hence their
Java probaly will die eventually, but I'm sure it won't be C# that does it.
There May Be Trouble Ahead
by Alan Williamson
As Nat King Cole famously sang, we have to "face the music and dance..." This month's editorial is coming to you with a reader beware warning!
I've been engaged in some great debates over the last month on a variety of topics, but the one that has caught my interest is the old chestnut regarding the longevity of Java. Is it here to stay? If not, how long do we have? Quite rightly, it's being talked about and I've had the good fortune to brush shoulders with a number of big names in our industry who have given me their perspectives on the whole debate. I have my own feelings about where Java is headed and I do believe that if, as a community, we don't get our act together, we may have only five years left at the most. After talking to my counterparts, it would appear I'm being overly generous with five years.
What's happening? Well, it's our old friend C# and its relentless march toward the development community. Setting aside the old argument that due to Microsoft's dominance it may well win the day, it's interesting to look at other reasons why C# may win the battle. Let's blow away some misconceptions that you may or may not be aware of regarding this new kid.
Myth #1: C# is a Windows-only technology. .NET services alongside Apache on a Redhat box, seamlessly integrating into the rest of the network. This alone would be a major blow to server-side Java. It's also a subtle way for Microsoft to unofficially support the growing number of Linux seats without losing face (read www.halcyonsoft.com/news/iNET_PR.asp).
You could be excused for believing that, but did you know there's a major movement in the open source world to port the CLR (Common Language Runtime, i.e., their JVM!) to operating systems other than MS Windows? Linux, to name one. Imagine for a moment being able to run your
Myth #2: C# is an inferior Java clone.
This is the most dangerous one and the one you probably tell yourself in order to keep the scales tipped in Java's favor. The truth is, it's not an inferior clone; it's a different clone, with many arguing that the differences are minute to the majority of the developer community. It will be frighteningly easy for Java developers to move over to C# with no real headaches to contend with. I suspect this was always on Microsoft's mind when developing the language (read www.prism.gatech.edu/~gte855q/CsharpVsJava.html).
Myth #3: C# is for developing Web services only.
Most definitely not, and I have heard this one retorted back to me on a number of occasions. Ironically, this is the one area that could really hurt Java Ð on the client. As you know, Java has not made any significant headway in this space due mainly to its awfully slow Swing implementation. While the recent release of JDK1.4 has brought significant performance gains, it's still nowhere near the speed of its native Windows applications with respect to fast, snappy responses (although it must be said, the speed of a Swing application on a Mac OS-X does show what could be achieved). C# is the new building block for Windows applications, the next VB! And we know how many applications popped up when VB hit the market (read www.c-sharpcorner.com/WinForms.asp).
Okay, how many of you think I've abandoned all hope for Java and have gone to the dark side? I suspect some of you are questioning my loyalties at this precise moment, wondering if I'm fit to occupy my role as EIC. Well, don't panic, I'm merely being a realist and looking at it from all angles. You'd be the first ones to complain if I buried my head in the sand and just ignored the threat. We have to look at this together and come up with a strategy that will enable us to effectively take on C#. We'll be getting a lot of heat from all over and we need to be armed with the information and prepared to go back to the drawing board and reeducate the masses. Sadly, they are being led a merry dance by Pied Piper Gates.
Allow me to cite you an example of such blind ignorance and if this doesn't scare you, then I don't know what will. I was recently involved with the Scottish government, discussing technology and what have you, where naturally the topic of Microsoft was high on the agenda. Excusing the fact that these people took a certain pride in believing they knew what was going on and loved name-dropping, the phrase that caught me off guard was the following: "Java? No one is doing that now. Microsoft is no longer supporting it."
Wow! Talk about a major miscommunication. And this from someone who controls budgets for the technology sector in Scotland. Ironically, I believe he really thinks he has his finger on the pulse of technology. It's sheer ignorance like this that scares me the most. Microsoft has successfully planted and nurtured the seed in people's heads that just because it isn't supporting Java in Windows XP, Java is dead. I have to admit I was taken aback and quite flabbergasted when I heard that retort. I really didn't know where to go with that. So much background information was obviously missing that I wasn't too sure if I would come over as patronizing and whether, ultimately, they would understand.
Sadly, this is not an isolated incident. Ever since I started writing about this topic in my editorials, I've been hearing stories from you regarding similar misconceptions and it scares me. We have a beautiful language here in Java; it has achieved industry-wide support and is pushing forward with great velocity. What can we do to support it?
You do realize we need an anthem. All great causes have an anthem. Something for us to get behind and sing!!! Suggestions gratefully received. We need a Java song!
Until next month...
Author Bio
Alan Williamson is editor-in-chief of Java Developer's Journal. During the day he holds the post of chief technical officer at n-ary (consulting) Ltd, one of the first companies in the UK to specialize in Java at the server side. Rumor has it he welcomes all suggestions and comments.
It seems like we here this a lot. Now that we have language X, no one will program in language Y anymore. Time after time, this proves to be incorrect. There are many reasons to stay with an old language, even if a better one has come along. This includes finding programmers who have the requisite years of experience, the added development cost of doing multi-language development, programmer preference, etc.
C# will definitely become a major player in the field. Both due to the fact that it is a well reasonably well designed language (Anders Hejlsberg did a good job) and that Microsoft is going to put its weight behind it. But just because C# becomes big, doesn't mean that Java will disappear.
I think the author has several good points, especially in pointing out some key shortcomings of Java (java on the client, Swing). Also, the .NET toolkit looks very competent and building and deploying .asp's is quite simple as compared to deploying a java solution.
.NET instead of Java in their tools. More important, when IBM and MS are talking to each other and making standards for web services, it is more likely than not that both Java and C# will coexist.
But the key thing not mentioned is the fact that Big Blue and the rest of the industry is quite determined on Java. Sure, IBM and Microsoft are working together on Web Services, but I think IBM is unlikely to start supporting
Java has shortcomings, but it has become a success despite this, and due to a vast support from professionals ranging from programmers to computer scientists. To say that all this will be gone in 5 years is more than bold, when in fact the amount of existing Java code are probably more than can be replaced in 5 years.
Of course, languages and platforms come and go, but since C# doesn't drastically change the way application development is done - which is what Java did, in several ways - I don't think it'll start a revolution in the way that the article suggests.
Oh, I can't help quoting you because everything that you said rings true
There are couple of key points that are interesting about this.
C# really is a standard. Microsoft's decision to go the standards route really validates the competitive advantage true open standards generate.
The HUGE question is if Microsoft will try and pull some patent / IP protection / royalty stunt with C#. We need to have some lawyer go over the C# license, standards doc, patent agreement to see if Microsoft has given up it's rights to sue for patent infrignment if people develop competing implementations.
My feeling is that if it becomes clear that C# is a truely open standard, that it will be suprisingly succesfull. Despite what Java zealots like to claim, the underlying technology is good. And while I initially was a member of the Java lobby, their eternal harping on the "eventual" standardization of Java turned me off. Java is not an open standard, and for an underlying technology that every company can feel comfortable going with (including Microsoft) that fact is problamatic. And Sun has already pulled a couple of students with Java and royalties on the enterprise level etc. We're getting competing implementations already with go-mono.net for C#.
The problem Microsoft faces is that they really need to totally convince folks (aka with binding legal agreements) that they are making this a real open standard and aren't going to pull a patent protection bogosity on anyone. They face in this case the facts of their history, which is horrible. I'm frankly concerned a bit less about the embrace and extend side of things, though it would be nice if they didn't pull stunts in that area either.
Anyways, if Microsoft does it well, C# could really take off. The key is schools. Java is the it language now, and that matters more than people think. If you start with java you become familiar with Java IDE's, you become familiar with other Java projects, and when the time comes to whip up your first website you'll pick java which means when you deceide to make a big website, you'll probably choose Java as well. People will choose whats comfortable, not what is necessarily technically superior and the decisive moment for comfort is what you are forced to learn in high school and college.
"(C#)will still be disabled whenever I browse the net"
.NET is the runtime environment you mean that you'll be turning off. .NET can be used by VB, C, C++, C#, Perl, Python and a dozen other languages.
FYI C# is a language NOT a runtime. You cannot "Turn off" C# any more than you could "Turn off" C or C++ on your computer. You're probably confused because "Java" is a language AND a runtime. When you say your turning off Java, you mean your disabling the Java runtime environment.
Contrary to popular belief, coding is not all free blow-jobs and beer. Those things cost MONEY!
"Microsoft has successfully planted and nurtured the seed in people's heads that just because it isn't supporting Java in Windows XP, Java is dead"
I don't think MS had much to do with it. Sun and a seemingly large segment of the Java community and many industry pundits made a big stink about XP not including Java. I don't recall MS saying much one way or the other except saying you could download a JVM from their site. The Java community themselves planted this seed of doubt.
"As you know, Java has not made any significant headway in this space due mainly to its awfully slow Swing implementation. While the recent release of JDK1.4 has brought significant performance gains, it's still nowhere near the speed of its native Windows applications with respect to fast, snappy responses"
I'm not going to say Sun should open source Java, but for heaven's sake, make a GUI toolkit that doesn't suck. You can't cite Java's 'newness' as an excuse anymore.
However little you think of VB (especially VBScript) MS has provided a huge number of tools to make development easy and painless - and the results are often decent. I remember being able to put together *simple* VB data collection forms back in 94-95 without having too much idea what the hell I was actually doing. There STILL nothing like that for Java. - Go ahead, flame away. I'm not a hardcore Java guy, but someone else here at the office is, and we constantly see shortcomings. That's not to say there's not strengths too, but still shortcomings. Open sourcing Java *MIGHT* help overcome many of those shortcomings (especially in the GUI toolkit area).
I keep repeating this on various boards - if Sun was serious about getting Java to the masses, they'd carpet bomb the hell out of the US with CDs ala AOL with the latest JVM for multiple platforms. That they DON'T do this speaks volumes. Better yet - get AOL to bundle it on their CDs and have an installer with lots of nice Java packages - an 'intro to Java' for the common man. Explain the cross-platform benefits, etc. - something my mom could understand.
creation science book
Looks like the site is starting to bog down, so here's a mirror if need be.
--It's Pimptastic!--
As a CS major, i've used quite a variety of programming languages. Among those, Java is by far the smoothest, easiest to understand and most elegant.
C is outdated, C++ is the standard and is much more refined than C, but still has it's quirks and rough edges.
Java offers very well documented classes and easy ways to do EVERYTHING. This alone makes Java superior, but also, Java enforces object orientation. While some people don't like this about a language(especially when you want to just write a 3 or 4 line mini-app), most people won't argue that once you have learned what classes, objects and methods are, OO makes things SO much easier to understand. It's a lot nicer way to think.
C# will never replace Java, it's just too cool.
Circa 1995 I was saying this about Java....
C# is new, and so it has a less established user base. Never assume that that means it will be a smaller user base for long.
It has APIs for everything from speach to distributed computing.
;-)
Excluding spell checking APIs, that is
Myth #6.
Despite the hoopla over Mono, its not likely that
Myth #7 Java needs the desktop to succeed
Not so. Java's greatest success to date has been on the server, powering servlets and
Myth #8.
Um, well yeah, as long as they are singly-inherited languages that don't have pointers and don't support any unique features, I guess that statement is true. Otherwise you are really looking at a bunch of languages whose features are the same and only differ by syntax(unless they don't support all of
Java is five years ahead in this game, has widespread corporate acceptance, and the deciding factor is the server, where Microsoft is still way behind. If this is a horse race, my money is on Java.
No, Thursday's out. How about never - is never good for you?
Microsoft benefits in two big ways: the hoards of Windows application developers will make the switch from Visual C++ to C#.NET, because of C#'s incredible versitility and cross-platform capabilities. Non-Windows developers (both C++ and Java) will start using C#, because it can do everything that C++ and Java could do, with the added bonus of being very Windows-friendly. Microsoft's third-party developer base expands. They gain further entry into the internet services world that they very much want to take over.
Interestingly enough, as good as this is for Microsoft, C# and .NET may (perhaps) be a blessing in general to the world of computing by introducing the first *truly* write-once-run-anywhere development platform.
dinner: it's what's for beer
One example of the author's cluelessness is that he touts the Halcyon solution - which is implemented in Java. This is supposed to show Java's vulnerability how?
The rest of his "myths" are just as insightful..i.e. a bunch of crap. ;-)
Where was SWT in this discussion for instance? Where was the discussion regarding millions of Java-enabled devices in the marketplace? Where was the discussion of Javas total dominance in application servers right now (perhaps .Net will make a dent, but it remains to be seen).
Then the author gives forth with:
"We have a beautiful language here in Java; it has achieved industry-wide support and is pushing forward with great velocity. What can we do to support it?"
For a start, perhaps NOT writing clueless, FUD-filled articles that completely exaggerate the threat of C# to Java... Many, many Java users are going to be very slow to move to a Microsoft proprietary solution...and make no mistake about it, .Net is Microsoft proprietary. Only the C# language and the CLR runtime have been submitted to ECMA and those make up a tiny subset of .Nyet (sorry, couldn't resist doing that at least once!).
Galileo: "The Earth revolves around the Sun!"
Score: -1 100% Flamebait
You can get a copy of the source to a CLI implementation which also includes a C# compiler that can run on XP and FreeBSD, here.
From the link:
-c
I have discovered a truly remarkable proof which this margin is too small to contain.
Quality, performance, value; you get only two, and you don't always get to pick.
Write once run anware is a load of bull. The syntax of java and C# are very close, true, but the underlying CLR has some real distinctions (and I'd argue improvements).
.Net is certainly not a beta. In fact. I look at the first Java SDK and I look at the first Visual C# SDK and I think, wow, if this is what Java zealots call beta (despite the fact that it is shipping) then those first Java SDK's should be called alpha alpha.
API's? I think you forget Microsoft is a huge company. What's to stop you from using the Microsoft Speech component from C#? Nothing. In fact, C# is meant to take advantage of exisiting components. And though Java zealots hate to admit it, that means that there are more than zero API's that C# can use.
Every time a read a Java zealots arguments I'm struck by how FACTUALLY wrong they are, and how STUPID they like to think Microsoft is. You call C# a bet.
Visual Studio
The point of the article is that Java zealots like to ignore the facts, and that that may come back to bite them. I think your note proves the point.
"the problem with C++ was that exactly zero of code was reused, "
bull.
I won't get into a JAVA/C++ debate, but please don't go off spouting crap like that, and try to understand that which you speak out against. You make yourself out to be a damn fool.
A damn fool, is the worse kind.
The Kruger Dunning explains most post on
As a sideline observer, I have seen Java rise and CRASH. At more than 18 customer sites, Java was regarded as amateur. Java is a great cross platform language, but it never did fulfill it's promise of a THIN Solution to bandwidth problems.
Our company spent Millions coding in Java, only to replace it with Native C 2 years later. Guess what? 55% increase in speed, 45% reduction in size, and before you knock the programmers, they're completely competant.
I know of 2 companies who put their faith completely in Java, had a great product, but somehow corporations kept waiting and waiting til Java "matured" and these comanies both went bankrupt waiting.
-YoGrark
==The opinions expressed in this opinion are not necessarily based on fact, are not necessarily reprentative of the poster==
Canadian Bred with American Buttering
-1 Troll
C//
I started learning Java during the great Java hype (1997). Then I went back to school to learn C. My initial impression was, why would anyone want to program in this unweildy language where your executables crash with weird errors like "Segmentation Fault" and "Core Dumped". I did not like all that pointer crap and the fact that you hade to declare your variables before you did anything else.
... each have their own attractions and turn offs. C# is something I haven't approached yet. But like dating, it just broadens your outlook (not to mention the fact that it is fun).
Four years of college and several programming languages later Java is still my best girl. But I have learned to appreciate the beauty of C and its need to be a control freak in some cases.
To solve the debate, I am going to quote the words of one of my professors. "A programming language is a tool in a tool box". There are several things wrong with that analogy. I tend to think that a programming language is like a woman and learning one is like dating.
Im my 5 year 'dating' life I dated more languages than girls. Perl, Python, Tcl, C
There should be not be fear of a new programming language. It is the new girl in town. It is true that one has to be wary that C# is a Microsoft baby. If it turns out that you cannot use C# without paying MS big bucks and the returns are not justifiable there are always other alternatives to look to.
When I was a sophomore, I was scared when some senior started talking about C++. I thought, another language. Oh no. But once you have mastered the basics of what I referer to as the dating game, you can romance almost any girl. Even if it was the girl with red hair and pierced ears (Perl) or the one that you can't take your eyes off of (Scheme).
Java seems to be in the damned near forever category. There is a lot to recommend it, but, more importantly, there is already a lot of java code out in corporate infrastructures and corporations don't like to rewrite from the ground up.
That's not to say java won't shrink in terms of overall importance. That seems a likely outcome of more competition, especially given the poor experiences many people have had trying to implement java-based solutions.
C# is only one -- though a signficant one. Off in the weeds, python use is slowly growing, and python can fill many of the same purposes served by java. With Mozilla finally biting the bullet and declaring an API-frozen 1.0, some of its tools might also find a spot.
Java is like every other technology that ever existed: sooner or later something or some things come along to displace it. Not kill it necessarily, but displace it.
"We have a beautiful language here in Java; it has achieved industry-wide support and is pushing forward with great velocity. What can we do to support it?"
Well, another song product, Open Firmware, has a song (though it's not a programming language... but it does use Forth!)
"I would say that 99 per cent of what my father has written about his own life is false." - L. Ron Hubbard Jr.
You're right! The painless integration with COM and otherwise native code. (you can do inline C inside of C#)
Also people are saying 'When Microsoft's API is as big as Javas...etc.'
The size of the API doesn't matter as much as you think. Microsoft achieves the same stuff, from j2ee capabilities down through graphics, mathematics, etc on a full api. It also supports checked and unchecked arithmetic, as well as automatic marshalling between primitive and object types (no more of that Double() and Integer() bullcrap)
Thats why Java should be scared, and that's why Java really needs to update their bytecode to make it more optimizable from an algorithims standpoint. If they dont they will be hurting.
The Dean of Engineering at my university was overheard saying "Boy, switching the curriculum from C to Java was a big mistake".
Java has some really nice features but I find it more useful in the learning situation. In real life I found C and C++ much more useful.
--- I used to moderate, then I read the -1 articles and decided having to filter through them was not worth it.
Absolutely!
But then, so is Unix. NT is going to absolutely destroy it.
Don't forget that Visual Studio costs over $1000. There are a large number of decent Java tools that are free (as in beer.) For the notoriously cheap developer community, that is significant.
Now that Java is the biggest player in the industry, it seems Sun has gotten a bit greedy, and is trying to cash in on Java's popularity.
I'd like to know how much time and millions of dollars Sun has spent developing this free language, with a wonderful API, and plenty of source code available, before I start calling them "greedy."
If anyone's greedy here in this context, I sure as hell don't think it's Sun. Shit, they could make Java proprietary today, closing off all source access, requiring people to buy the JDK, etc... and it would still be popular, and you'd still have all their current and older Java-related stuff available for free.
"And like that
just like Java, you have the option of downloading or not the .NET framework. So, the fact that Java is bundled or not with Windows won't make much difference.
.NET platforms will win over from java because .NET compilers to .EXE and .DLL files which look and seem to work just like the ones you are used to.
Of course they are completely and utterly different behind the scenes, but that one simple fact makes .NET seem familier but new and exciting, and not at all like all those scary java .class files.
Ok, so I exagerate, but I think that having .EXE and .DLL files really WILL make a lot of difference to how people percieve this platform.
Sig is taking a break!
The problem with the Java Environment is the integration of the tools. Even beta 2 of .net I was amazed at the productivity gains. Even thou I hate the beast they do have very good tools. The tools will make the difference. They did in the early 90's with VB. People bitch about performance that is not the case. If you look at VB It had performance problems compared to C MFC apps but it was highly adopted because a lot of people could easily churn out code. Even people that should not ever write code.
.conf file and figuring out where my classpath is pointing too and why my servlet is not making its JDBC call the .Net guy has already deployed their app and is fetching XML records from SQL Server.
/Java person that can be as productive as a .NET / VB business analyst will cost a company more.
C# as a language does not matter it is very similar to java. It is about the tools and can you get a business analyst that churns out VB code who has never used a command line to adopt your environment.
Jbuilder is a nice IDE and ANT is nice for makes but while I am vi ing an apache
Which one will they adopt and why? A nerdy UNIX
I hope the beast does win but it is about the tools!!!! History repeats itself.
In 1995 Java had substantial advantages over the then-dominant languages. Today I see no compelling reasons for Java developers to jump ship to C#/.NET (and one big reason not to).
How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
Java is a good language, but starting to show some of the wear all languages do as they age. C# and up coming J# are new languages and like all new languages build on the past with new features, requirements, and libraries. Java did the same thing when it came out, building on C++, Smalltalk, and other languages.
Bottom line Java isn't going to go away, if you like it keep using it. You will have plenty of work for years to come. C#/J# (they all compile down to CRL anyway) are new and cool and people will use them.
Be happy, you got Java because Sun thought they had a better tool than C++ with MFC or OWL or whatever library. MS has upped the ante in order to compete and came out with the CLR and C# and other languages CLR will support. Now its Sun's or anyone elses turn to come out with something better. It called evolution and we all benefit from it.
Why mess with success?
Because if we didn't mess with it, we'd be programming with 8 switches on an Altair. Also, how would Freenet be more useful if it were written in C? You just state this and then go on to your argument that if something works it should under no circumstances be improved upon. Does C have some magical functionality that remains wholly unavailable in Java?
I'm serious.
cheers
IIRC, Java Developers Journal has very close ties to it's older sister publication Windows Developer Journal, and receives much of it's funding from none other than....
<drumroll/>
Microsoft
<cymbal type="crash"/>
With that in mind, it's not surprising that the editor has such dire predictions since you can guess who signs the checks.
Note, I'm not bashing C#. The language is so similar to Java that you can certainly find good things in it, but predicting that MS will port their runtime over to a large number of other platfoms might not be the smartest bet.
There is one good reason that Java will never go away, JAVA Rules!
I notice that you only compare Java to C and C++..
Sure, it's better than Stroustrup's train wreck in a lot of ways, but I notice very little enthusiasm for Java among people who already knew a superior OO language, such as Smalltalk.
What you say about OO is true, but Java isn't a very good example.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Correction: 3 million programmers. 1 million downloads of 1.4 in the first month it was released (a few months ago)
please don't go off spouting crap like that
ok, without going into a flame war... sure there are excellent packages available for C++. even some libraries that people use, like sockets, STL, perhaps even system libraries that you can throw in the mix. i was a little too brief there.
but Java made so many packages beyond that.
yes, there are XML parsers for C++, but everyone uses the Java one. (not the least of the reasons is that Java looks more web-friendly)
yes, it's conceivable to write a servlet/ODBC solution in C++, but Java does that so fresh and so clean (ok, mostly clean...).
yes, C++ has a mechanism for extensibility, but Java even has reflection that beats everyone's pants off when it comes to enterprise solutions.
in short, when you don't want to sit and program all day, but simply want to customize someone else's application, much like what the web services want you to do, you simply go with Java, because you won't need to start your Java application from scratch.
yes, i realize that a lot of these reasons are due to marketing, but they are real concerns for enterprises.
I was thinking of how to intentionally fail my drug test... It would make a good memoir story someday.
.NET is great when you run a wine storage facility and one day, most of the storage shelves fall over, breaking all the bottles. Then, you can use the almighty .NET to change the price in one button click!
Peanut gallery: Hmmm... I thought any well-designed inventory/price control system could handle that.
Steve Magruder, Metro Foodist
What does C# have?
A full-featured IDE that lets you collapse arbitrary sections of code? (Among other features of course)
A few million Visual Studio users looking for the next new thing?
Support from an 800-pound gorilla?
Java has a lot going for it too and neither language should be discounted.
Maybe in five years COBOL.NET will be king...*shrug* You just never know in this industry and that's what makes it fun.
So..open source is the solution to all of life's problems. I guess that means despite evidense to the contrary Blackdown really DOES have JIT support and is the fastest JVM ever made? Man I'm sure glad you told me that so I don't have to believe the Blackdown group's lies anymore.
I'm a loner Dottie, a Rebel.
Sun is trying to maintain control over Java and leverage it. Its clear to any Java programmer.
They currently only put 2 certificate chains in their keystore. so how much do you thing verisign and thawte paid Sun for that priveledge? you think that was free? Especially since we have to pay over $100 per year to get certificates.
Their are ago old problem with Suns Functionality on Windows which Sun seems to think is cool to blame on M$. So they dont fix them as long as they can pass off the blame. They could have been fixed them. Like getting rid of terminal windows on spawned programs.
Sun is not smothering Java, but they are not letting Java move as fast nor as friendly as it could.
No I agree c# will not have the community that Java has EVER.
C# does NOT compete with Java. I have to say this about 15 times per month. Clearly M$ wants to keep pushing this idea, but no one has yet told me why its supposed to. C# competes with c++. c# is for windows, Java is for everywhere. Yes maybe you can use c# on some other os, but c# is "for" windows.
I wish they would just let this fake arguement of c# knocking off Java die.
TTBOMK, seahash was developed closed-source and proprietary, then it was submitted to ECMA to be considered for becoming a "standard." Open source usually means community-supported from the get-go, and good software becomes a de-facto standard, e.g. Apache, Squid, Perl. Microsoft developed seahash as a Java contender.
Big Daddy, Johnny, Burp, Aunt Zelda, Scott, Slurp, Big Momma
News for Geeks in Austin, TX
Their market capitalization is fragile, based on things staying pretty dang rosy as far as MS is concerned. Once Wall Street no longer believes then the game is over. Suddenly all their best and brightest will be working for peanuts. At first they'll fool themselves into thinking it's just a blip, but eventually they'll start to leave. Once that happens MS will have to start paying real salaries. But they really can't afford to, because their accounting scheme is based upon rewarding with stock options they can print, not actual dollars they can't. So now they start missing quarters, and a few missed quarters in a row and then the stock price collapses down to conventional levels and below.
The above doesn't have to happen, it's certainly a real possibility and more likely than C# taking out Java.
What makes Java different from another once-hyped language, like Delphi, is that Java has actually reached a critical mass with the guru-level developers and the best development shops and has maintained it for at least a couple years. This means that there will be plenty of Java maintenance work lying around for years, if not decades to come. You can't say the same about Delphi. Most shops in the U.S. have already vacated Borland technologies (even though they're better than MS Visual Studio crap, of course).
So, bring on C# and .NET. J2EE needs competition, and thus Java development is bound to get better and better, and stick around longer and longer.
Steve Magruder, Metro Foodist
If it is true that C# is very similar to Java and it is true that C# can be used on non-windows platforms, then why should we be concerned about C# coming to dominate? I mean, all the java developers go learn C# and life goes on.
What's the problem?
This sig has been temporarily disconnected or is no longer in service
Not true. What Java lacks is dynamic binding / linking. For example, take two classes - Obj1 and Obj2. Obj1 can't be compiled if it makes a method call to Obj2 and doesn't have some sort of reference to that object - like a header file. A true OO programming language would allow you to do this because everything is linked at run time.
Take a good look at ObjectiveC. It is completely ANSI C compatible and is also a true object oriented programming language. SmallTalk is another prime example of a true OO language.
You're right when you say that Java isn't a pure-OO language but you're reasoning is incorrect.
Willy
(* What we need is an open language that matches up to java and c#. Something free of patents and IP. *)
Heck no!
There are already PLENTY of open languages. What is needed is open API's.
Why should I have to use language "X" in order to use API "Y" ??????
Sun is trying to turn Java into a fricken OS. It is like Emacs: "It is not just an editor, its an OS". Java: "It is not just a language, it is an OS".
Table-ized A.I.
There is one big compelling reason - people who want to develop Windows client apps will move to C# and .Net.
Then, one day, they'll want to write an app that runs on the server and spits out HTML pages. Guess what? They'll be writing it in C# and .Net ...
No disrespect intended at all but java lowered the benchmark. In the bad old days you need to know about different platforms, you needed to know how OSes and processors worked to be a really really good software engineer. Not that those skills are what define a programmer or what make someone useful in this industry but that's how it was. Java steps in and you don't need to know about hardware or anything like that to be an effective programmer. Plus it's insanely easy to do a lot of stuff, you can just churn out code that does the job correctly in it. Now it's going to take a super computer to run on and your apps are going to have a slightly different look and feel and there is this huge JRE image you have to transport with your apps but you can make apps faster and you can use people with less knowledge to do it and that's probably a lot more valuble than a few cycles and a few megabytes of RAM. (BTW, I've always felt that lowering the benchmark was my duty as a guy with the CS degrees and the knowledge about how all the low level stuff works, the job of us is to make it possible for non-computer people to do useful things with computers.) Java lowered that benchmark in a radical way and then heavy weights like IBM, Sun, and even MS at the beginning were touting it as the future, the new VB, the future of software.. There is a lot of legitimacy to using tools like that, it shouldn't take a genius to write most of the code that needs to be written. Java is an insanely good tool because it does lower the benchmark and it allows people to focus more on solving problems than bits and bytes.
Now that's a prime tool for followers to use, it's easy, it has support from big players. Lot's of the people who are in the java game are people who follow, not all of them but a lot of them. They saw that as the skill to put on the resume, plus it's easy and fun to use, so they move in and start coding up java. Now MS is trying to piss on their parade, java doesn't come with XP (big f---ing deal because anyone serious about java application development was only supporting a specific JDK or two anyways and you probably put it on the CD with your app, that how we do it at IBM and both IBM and Sun have pretty liberal licenses for redistributing their JREs) and they've got this great new C# technology that's just as easy and not too many people have been fired for picking MS solutions. That's another prime environment for the followers. Of course there will be people who flock to it. It's all FUD and hype but it works. The thing to recognize is that those people who moved to java and are going to move to C# will move to whatever the next thing is too, it's not like they're really loyal or something, as long as it's profitable to use and there isn't something more profitable they'll use something.
I think the reality is that a ton of code has been done in java and some of the big boys have committed enough that it's not going to be easy to move completely to C#. Java is going to die just like C and C++ did... oh wait. The fact that C# exists at all is proof of how good a tool the java is because MS is trying to knock it off and lock their followers in to their platform. It's also proof that these kinds of tools are needed and desired.
Java won't go away but I think there is a lot to be said for watching this tide of followers move. The Free software community can benefit from it largely. Maybe we build our own Java/C# for Linux and BSD. There are plenty of tools that already exist for it. I think you could make a standard distribution of Python with a select group of modules, document it, brand it, rally some support for it and you have something similar. If we want to start to really move over to that next level we should start trying to build that benchmark lowering tool for the opensource world. Simply copying or porting those kinds of tools is enough to give Linux and free software some a fair amount of credibility but to take it up a notch we should lead and create our own tools like that, the best you can do while Sun and MS are leading is suck hind tit, you still get some milk but you might not get your hunger satisfied.
...that he isn't a FUD-monger, everybody will just buy all the FUD that he wrote. Then he is being more naive than his readers.
Okay, how many of you think I've abandoned all hope for Java and have gone to the dark side? I suspect some of you are questioning my loyalties at this precise moment, wondering if I'm fit to occupy my role as EIC. Well, don't panic, I'm merely being a realist and looking at it from all angles. You'd be the first ones to complain if I buried my head in the sand and just ignored the threat. We have to look at this together and come up with a strategy that will enable us to effectively take on C#. We'll be getting a lot of heat from all over and we need to be armed with the information and prepared to go back to the drawing board and reeducate the masses. Sadly, they are being led a merry dance by Pied Piper Gates.
I personally believe that Java and C# both suck by themselves, both are "poisoned technologies" (ones that carry arbitrary idiosyncrasies built into them just to advance the agenda of their creators -- the only positive example of "poisoned technology" that I have seen is fictional -- it's Asimov's robots, and even they aren't completely positive), that they pretend to solve existing problems while actually solving the problems that people have yet to invent. However the amount of FUD (ex: C# on Linux? Without a single Win32-only library that every usable C# program is going to depend on?) makes me feel bad for Java -- if it has friends like that, enemies are completely unnecessary.
Contrary to the popular belief, there indeed is no God.
Then came the folks at M$. M$ bought an operating system by the name of "Quick and Dirty Operating System" or QDOS. M$ dropped the Q, both figuratively and literaly, and we were left with a dirty operating system by the name of DOS. Now M$ had the power. This power continued with the introduction of Windoze and continues still today.
A bunch of people got really, really mad at M$ for a variety of reasons. Groups of them attempted to overthrow M$ by creating other operating systems. But a sly company by the name of Sun developed a new cup of proprietary abstraction called Java.
Java gained much appeal, but was never able to really give Sun the power that they sought. And they all didn't live happily ever after since everybody has paper clips yelling at them pretending that the paper clip is smarter than the user.
Moral #1: Sun created Java to create another layer of abstraction so that they could rule the desktop market.
Moral #2: The paper clip is smarter than most users.
So which evil do you wanna support? I'd support Java if it was standardized by a committee such as ANSI or ISO. And Sun allowed use of Java license-free.
By Way Of Example: This article, the strangely prophesied Unix Isn't Dead, and this booster for the next version of Windows.
Although I might be paranoid to wonder about this, it would be a pretty impressive use of grassroots resources. It seems like what they're doing is writing articles that cast doubt on the official Microsoft position. These articles naturally become (in a free spirited discussion site) a thread with some people defending MS and some people attacking it, which provides an excellent position for posting Microsoft's stronger arguments which then reach open-minded developers.
Anyways, it's an amusing thought. :)
Simple.
Java is Java. You cannot plug any other language into the VM. The VM is Java, and Java is the VM. This means that you have all the good and bad associated with this language (more in a minute).
With .NET, and C#, C# is not .NET. The CLR allows you to plug in other languages. See ActiveState
for details. You can plug in Perl, Python, Tcl, etc. And it works.
Why this is important (and it is): No one language is suitable to all tasks. Things which are trivially expressible in Perl or Python are non-trivial in Java. Things you might be better suited to use Fortran or C++ for (for speed or other reasons) are best left in those languages.
Java makes the fundamental mistake of attempting to be all things to all people. It really isnt as good as the hype surrounding it makes it out to be. And the hype has been shrill as of late.
What is Java to do? Well, it can shrivel up and go away, or adapt. This means that it would need to open its VM up to other languages. It is not C# vs Java that is the problem for Java, it is J2EE vs .NET. J2EE suffers from all the problems that Java suffers from (it has to). .NET has its own issues, but Mono is coming along nicely, and it runs nicely.
My best guess is Java will probably continue to win designs for another year or two as this technology (.NET and Mono) firm up. Microsoft is smart enough to know that Linux is its strongest and fastest growing threat in server-land, so if they can give the Linux world something they can deal with (by allowing Mono to continue and interoperate), they get to kill off J2EE by sucking the oxygen out of it.
And that is exactly what they are doing.
Java and J2EE are "dead languages/environments walking" for a few more years, unless they can open up the VM and interoperate like Mono, .NET, and the CLR allow them to. Check out the articles on perl.com about using Perl with the CLR and .NET.
Well, that's a considerable overstatement.
It's true that C++ code has many dependencies that make it difficult to reuse (e.g., "only virtual members can be redefined, but how can you tell?", etc.) But there are many successful libraries.
Java make code reuse a bit easier than C++, but does so at the cost of reducec execution time efficiency. There proably isn't any way around this, despite the claims that keep being made.
A still larger amount of flexibility brings us to the arena of Smalltalk/Python/Ruby. And you will notice that the execution time is again slower. Sorry about that. TAANSTAFL.
But Smalltalk is well know as one of the best examples of code re-use. Ada tried to design for reuse, but Smalltalk built documentation into the environment. So code reuse became common. At a cost. The environment must be present when running the application.
There are a series of trade-offs here. You get to choose which one you make. You can do worse than the optimum, but you can't do better. Some people have been claiming recently that by designing a virtual machine (interpreter!) small enough to fit in memory, it becomes more efficient than native code. I really doubt this. Really. But there may be some particular machine configurations and ram/cpu speed pairings for which it is true. (You can do as well as optimum, but how does one determine that? Remember that the assembler instructions themselves are microcoded these days, so the native code is, itself, a virtual machine.)
And I doubt that C# will remain restricted to the MS platform (or MS + BSD). But think of the BSD version as a step towards the Mac. And C# is close to running on Linux (I thought I heard that it compiled itself about a month ago [not to something that would execute, mind, just that it compiled], so give it a year or two).
Personally, I'd like to see C# and SmallEiffel and Ada added to the gcc. SmallEiffel seems to be aways off, but Ada was rumored to be nearly there (possibly for gcc3.1?) a few months ago. And C# (plus mono) would allow gcc programs to access most things on *.net. Technically, at least. Licenses might make this illegal. (Which licenses should themselves be illegal, fraud seems appropriate here.) Still, as well as the good aspects, that might open Linux user-space up the the new flood of MS viruses that should now be expected. (Mono, it seems to me, should NEVER be run as root. Of course, I don't really understand it, as I haven't read any of the technical documentation and have instead merely subsisted on news reports.)
I think we've pushed this "anyone can grow up to be president" thing too far.
Riding home on the train last week, I was listening to two "software guys" talk about the issue. The summary, "Wow! Microsoft! .NET! Java is dead." "Do you know any Java?" "Yeah I took a course."
The guy took one course as a "programmer" and is an instant expert. Microsoft LOVES the instant expert, and books devoted to the programming shaman are dedicated to stroke their egos before the technologies are publically released.
My point is that its not just the high end decision makers that M$ buys, but also the low end technoweenie.
(The conversation proceeded to Oracle is dead 'cause its over priced, SQLServer rules the world - at which point I wanted to YELL M$ IS PAGE RECORD LOCKING F**KHEAD - then I realized that saying that I'd likely get the same blank stare as my mother gives me when I talk computer talk.)
/\/\icro/\/\uncher
Sun sells big servers.
Sun wants people to buy more servers.
You dont run swing on a server.
dominionrd.blogspot.com - Restaurants on
... and that's been my point lately about a Java porting effort we're considering at work... We're moving to (already have many) web-based apps. Ok, fine, argue out development speed, tools or something.... but portability of code to many platforms is simply not a consideration for me at the server level. that's ONE server... big whoop.
DO NOT DISTURB THE SE
With every day that passes, Java grows more and more mature. Developers can learn and use the language in the wild, so to speak, and continually work with it and understand all of it's little... quirks.
.NET bytecode? The question is will it work the same as their original counterpart? Will it work flawlessly with so-called "legacy" code.
.Net to mature enough to "compete" with Java. Some of those years have already passed, but many more are still to come.
C# is new. It's flashy. It's Java when it first came out. It's also immature and not widely used or even understood. With all the weight Microsoft will flog behind it there is no doubt that it will be a platform du jour for many developers. However, that does not mean it will displace Java.
For fucks sake, many places are still using COBOL. C didn't dislodge it, neither did Java dislodge C or C++. Sure Java, and eventually C#, is popular, but that doesn't mean that these other languages simply drop from the face of the Earth.
Too many retards are comming along plugging specific programming languages as the be-all and end-all cure for every programming woe that ever has been or ever will exist. In fact there is benifit from being able to choose languages and systems that cater to certain kinds of tasks.
I doubt many existing systems will be rewritten simply because Microsoft is thrusting C#. CLR? So, maybe, Perl or C++ or even Java can compile into the
I think a better apprasial would be that it will take 5 years for C# and
Price, Quality, Time. Pick none. What, you thought you had a choice?
"he problem with C++ was that exactly zero of code was reused"
I can only imagine what you mean by this. As a C++ programmer I can tell you that I reuse a great deal of code. And further, the "industry" is providing libraries for all the functionality that the Java API gives... with more options and better performance.
I do like Java for servlets, I must say.
-pyrrho
resume time?
Paying taxes to buy civilization is like paying a hooker to buy love.
Ada was just ahead of its time.
You did not answer my question. Portability is not functionality, it's an attribute. Were you to point out something that is possible in C and not in Java, you would have answered my question. As an aside, Java is portable. Why you can't set it up on your FreeBSD box?
The purpose of installing the JDK is to get all of the API's, such as the jdbc stuff (which is easier to program with, and less error prone than using the C db api).
C is the standard, and if some application does not have a C port, I'm not going to use it under any circumstances.
Please explain why. I don't see the logic in this.
As for C being the standard, it didn't used to be, which speaks to your original point. Why mess with success? People were programming in Assembler for quite some time before C came along and some people still are. The reason C came into being was to simplify the lower level details of programming, and let the programmer think on a higher level of abstraction. This is what Java does. C still has its place and Java isn't a replacement, but Java is a better tool for certain jobs. For example, if I wanted to write a servlet that did a complex search on a database (vendor independant, so long as I have their jdbc driver) of a known schema and dump the output to XML for choice of format to display would I choose to use C? No.
Your fighting the tides here. New programming languages will be developed out of need. You may be able to do everything in C, but that doesn't mean you should.
That is a matter of preference. You can easily provide very similar appearance for Java applications as well. Try to check Eclipse (the first example that came to mind, possibly because I use it every day :) - it uses a "launcher" which is seen by people as eclipse.exe file. The rest are plug-ins, which are .jars, though as an IDE user you couldn't care less about it. In other words, this Java application has the same appearance, as any .NET application. And though Java's method to achieve this is different from .NET's, "people percieving a platform" will not notice anything.
Smalltalk's problem is that it is too insular. It exists in a runtime environment that is pure and perfect, but does not play well with others. Maybe in these later years this would not be such an issue, because Smalltalk can talk across the wire as good as anyone, but if it's been good at talking to people far away for some time, it has been on bad terms with its neighbor from the beginning.
I think Java can be extremely successful, but the problem is that Sun's development pace for Java has kind of rubbed Hewlett-Packard and IBM the wrong way at times.
What Java really needs is the backing of a company that has made Java do real useful applications and provides a very good Java Development Kit. That company is called IBM.
Why do you think IBM's Java tools are so well-liked in the developer community?
Java sets up on FreeBSD without a hitch... All Java functionality is NOT available in C. C is only the standard on *NIX and clones. Being able to move a class file from one OS to another and not need to recompile is wonderful. Do that in C.
So, when MS announces that Java is no longer supported on their OS, the message people hear is, "Java doesn't work". This includes ordinary users and clueless CTOs; the techies know better, but no one listens to them.
In addition, "everyone knows" that .NET is built into every computer in the world, for free (well, there is that MS tax, but you need to pay it anyway, right ?). If you were developing a new server-side application from scratch right now, what would you use - a framework which is already built into every computer on the planet, or some dubious 3rd-party software that you have to download and learn ? Plus, it might be un-american to boot, who knows... better stay away from it.
You might think that the level of ignorance I described above is excessive, but I do not believe it is. As a comparison, consider this: recently, I advised my friend (who doesn't have much cash) to install Linux on his old PC, and he said, "No, that's too expensive". Can you expect people who ask questions like this to understand what a "Java library" is ?
In conclusion, I give Java about 3 more years (I think 5 years is optimistic). It's sad, but .NET is the future. MS simply has better marketing.
>|<*:=
If you go to your local big bookstore and count the books about a language and do that every few months you will find they are a great metric on langauges (and other computer buzword trends).
If you go count the books on C, Fortran or assember you will find a small number that is about the same size as it was last month as well as 15 years ago. Others like C++, Java, C# as well as Ada, Pascal, Modula2 before them all went through stages from none, to lots and then back to very low numbers. At this point Java is going down and C# is on the rise. C++ took a huge hit when Java came onto the block.
What has Sun delivered? Well, they have been doing a good job on the JIT. But beyond that, the Java APIs have become huge, there is no new support for numerical computations, the genericity support is flaky, VM sharing and fast startup are missing, and Sun is suing or picking a fight with whoever shows any initiative in the Java space.
C# isn't a lot better than Java, although it has a few important additional features. But, amazingly, Microsoft has been doing a much better job opening up C# in the form of ECMA C# than Sun. Maybe, in the long run, we may just have to thank Sun for providing the competition that caused Sun to open up.
Java does not belong anywhere near a Windows desktop when actually running programs (not just coding/testing). Java belongs on a server. plain and simple. On the desktop, Java is slow - no, Java is *really* slow. Other programming languages (i.e. VB) are slow, but they provide an easy way for people to make simple applications that can look professional. Java does not provide this. Therefore Java's slightly higher knowledge requirements and slowness make it unsuitable for the desktop. However, Java's strength is running on a server in a JSP environment. This is because Java has so many tools built in for networking (no more C style sockets, yay!!) that a (relatively) few lines of code can produce a very powerful Internet program that is fairly safe to run. I believe it is only hurting Java's image to even pretend that it can function as an application base for desktop applications. Sun should drop all of that - including Swing - and focus on enabling network technologies such as database interfaces and web services where the end user never even knows that they are being fed by Java.
ADD:
1) A pain: install Java
2) A pain: install CLASSPATH and packets.
3) A LONG pain - compile.
I don't know where you've been but for quite some time Java has worked out the CLASSPATH by itself. If you have a sane development environment (read: you arrange your source files according to their packages) you don't need to fiddle with the CLASSPATH at all.
Also, compilation is a good thing, it may take time but it means that the computer is checking your code for stupid mistakes (misspelled function call, wrong paramaters, missing bracket, etc, etc). Without that check you are far more likely to leave a stupid error in your code. It takes an incredibly long time (and usually is not feasible) to test every line of code in a program in every possible situation, so anything you can do to reduce the chance of error is a good thing.
Oh and you need to install any program before you can use it, TCL, Visual Studio, Java, gcc etc etc, they all need to be installed.
That's not to say that TCL is a bad language (I personally haven't used it) or that Java is the be all and end all, but the things you highlight are not the faults with Java.
Languages are nearly immortal.
We still have wide use of languages like C, FORTRAN, RPG, APL and Cobol, and Java has a very large, and rapidly growing code base, surely larger than FORTRAN, APL and RPG, and maybe even as large as C or Cobol. With the near universal use of Java as an instructional language, and the reams of Java code being produced every day for commercial use it is very hard to imagine the day when Java will be 'dead'.
To suggest that C# will replace Java is at the very best a great extrapolation.
Remember that Microsoft is first a great marketing engine, and most of it's initiatives do not live up to the hype. Like Hailstorm.
why the heck does it *not* have regular functions? It wouldn't be that hard to add global functions.
If you really want to write ugly code, then that's what static methods are for.
Global methods in the C sense get really bad because they only have one namespace. Static methods have a containing class and a package name, so nothing gets polluted. Maybe some people just don't like typing the extra class name every time they call System.out.println() (not really a static method, but you get the idea), in which case Java probably isn't for you anyway, what with the packages and descriptive English class names.
Everything I see of .Net and C# shows it to be better than Java -- but you only get the benefits if you are on Windows.
.Net are not even in the game, and may never be.
.Net will own Windows and Java will own the rest. Java will nearly vanish on Windows, since .Net can just send messages to Java apps.
.Net implementations on non-Windows platforms, everything I just said will change. That's the wild card in all of this, and there are some scenarios where really good non-Windows .Net implementations could really help MS, like MS-Office on the Mac. This should be interesting.
Outside Windows, C# and
My prediction, and it's not much of a stretch, is that
.Net will probably be somewhat better than Java, which will influence some people to use Windows servers (everyone will keep using Windows clients), but many others can't or won't use Windows. Those folks will put a lot of pressure on Java to keep up, probably mostly successfully.
Of course, if we get really good non-MS
I'm happy for the competition.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Comment removed based on user account deletion
They haven't done anything to help open source or any communities.
On the contrary, Sun has contributed source code to the Apache group (xml parsers, tomcat and batik). Lets not forget OpenOffice.org, where you can get the source code to StarOffice. Sun has also made various protocols open, like NFS and NIS (for good or bad). Has Sun satisfied everybody all the time? Nope, but I would affirm that they have helped the open source community.
Regarding the article and its assertions, I don't give it much weight. As long as Java programs accomplish the tasks at hand the language is viable. I'm sure some Java programmers will jump ship for C# and others will add C# to their repetoir, but that hardly counts for killing the language.
-- Solaris Central - http://w
1) Yeah, it's a horrid pain to doubleclick that icon.
2) Classpath done in step 1. If by packets, you mean packages, you have to copy any program onto the machine on which you want it to run regardless of the language.
3) Java compiles at about the same speed as C++.
-- Give me ambiguity or give me something else!
It's sad, but .NET is the future. MS simply has better marketing.
I think that some people, particularly some business people who understand the issues a little better (e.g. the upgrade treadmill, the reliability issues, the 'who owns your data' issues (though that last may be stretching it) are biginning to get it, even without being geeks. But numerically, you may be right. Even folks where I work who understand where I'm coming from and let me dabble in Linux still advise me to concentrate on niche areas, rather than going for everything, which they classify as "quixotic".
"that's not encryption - it's a new perl script that I'm working on..." - from some Matrix parody
It simply does not make good business sense to put any trust in MS, as history shows time and time again.
Those who do not understand history are doomed to repeat it...
I respect what the mono team is doing, they've done some really great work, but I think it's going to end up being a waste of time, I think it will come back and bite them in the ass.
But, I could be wrong. I _hope_ I'm wrong! If the CLR does become an unencumbered industry standard, well, that could only be good.
Personally, I never liked Java. I didn't mind the language, but every implementation I've seen has been quite dissapointing. And then... Swing?
The best thing that could happen is that the CLR turns out to be great, people freely use it, Sun loostens up, and Java switches to the CLR...
But these are my predictions... ;-)
1. Microsoft throws legal weight around and kills off more competition, completely destroys all competing implementations, stops supporting FreeBSD.
2. Sun loses lots of Java developers due to industry hype(aka, MS Marketing/FUD). Sun, being a stupid corp, becomes more controlling of Java and helps to kill off more developers.
3. Mono ends up being a complete waste of time. Miguel de Lcaza gets a job at Microsoft
4. Linux remains a niche OS. ESR and RMS keep talking too much.
5. My Linux servers keep running without skipping a beat.
6. Wine continues to improve allowing Linux users to continue getting that much needed gaming fix.
Sticking feathers up your butt does not make you a chicken - Tyler Durden
Portability of code to many platforms is a major consideration at the server level, particularly if you can only have one server at a time. If it runs right on one standards-conforming server, it should also run right on another standards-conforming server, with no nasty surprises. The realistic choices are COBOL, PL/I, ADA, and Java provided Sun can keep everybody from screwing up the language. That's of course assuming that the stuff on the server is actually important.
I don't recall MS saying much one way or the other except saying you could download a JVM from their site. The Java community themselves planted this seed of doubt.
Yeah, but the friggen Java download is 6 MB's! (So I've heard.) That's nothing for corporate users on broadband connections, but when you're trying to appeal to Joe Consumer surfing the web with his modem at home, with an attention span of maybe 20 seconds, he's not going to be patient enough to sit through a 30 minute download just so he can view your site. More than likely, he's gonna keep on surfing.
If broadband had 80% saturation with consumers, then maybe it wouldn't be a big deal. But I'd bet large amounts of money that this is Micros~1's plan, to push Java into irrelevancy by making it difficult to use. They couldn't own it via their embrace and extend strategy, so they're attacking it by slieghting it.
When I first started programming in Java eight years ago, the industry was far different than today.
Oh my god. That was eight years ago!? Damn I feel old all of a sudden.
autopr0n is like, down and stuff.
Lets not forget ImageIO, XML stuff, Swing (slow, but cool), and Java2d.
autopr0n is like, down and stuff.
Well, i am on a win2k pro workstation right now. I have a highly modified distribution of RedHat 7.2 with latest stable kernel from kernel.org. I'm a Java developer (among other languages). I installed visual studio .NET the other day... and learned the language (syntax and some libraries) in a matter of hours... it's ALMOST exactly like Java, syntax wise. I thought it was cool beacuse the GUI type stuff was faster than Java's Swing/AWT stuff... but then realized, how often am i making GUI stuff in java?... never. o well. As i browsed through the API, i started noticing stuff for accessing the windows registry... i saw stuff for loading DLL's... I saw a multitude of other things that were specific to windows. Now i ask you, how the hell will they port .NET to *n?x (that's unix) based operating systems if a good portion (about 20%) of thier APIs are specific to windows? How is that cross compatible? And what god awful software am i going to have to install on my Linux box to make it ".NET compatible". Are they going to force me to install a "registry emulator"? I hardly see C# taking over java. For one thing, I can't imagine any UNIX admin allowing microsoft software to run on his servers... eh... who cares... I'll still write java code when i want to write quick and easy OO code.
Oh yeah, and my bigest concern about the whole .NET thing is this:
Everything compiled under .NET (C/C++, C#, VB, etc) is ran through the CLR, and will run the same speed, no matter what language it was writen in. I've heard you can compile "nativley" but you loose a huge percentage of the .NET APIs.
With that said, why would i ever use C++.NET? If i'm gunna spend time writing C++ code i want it to run natively!!!!
I'm not drunk, I'm just in touch with pi.
that explains why go-mono.net is going gangbusters to develop an implementation on Linux
/. and I don't believe that Miguel de Icaza has ever responded to the substantial points, viz.
Pointing to others who share your beliefs does not advance your argument. Mono has been extensively criticized on
1) Java and the JVM are better established and equivalent in all major aspects to C# and the CLR, therefore a Linux platform would be better starting with that.
2) Since of the ~1200 classes in Dotnet, only about 150 are standardized, the chances of any substantial application actually working outside Windows are zero.
Having used JBuilder 4/5 (Swing) and Eclipse (SWT) on fairly ordinary Windows machines I think they're pretty even performance-wise, and visually. However on Linux JBuilder has the edge as the Motif version of SWT is a bit ungainly. Would be nice if there was a KDE version...
Anyway, I'm sure IBM didn't invent SWT purely for technical reasons.
A full-featured IDE that lets you collapse arbitrary sections of code?
How quaint! Wasn't that in some early Smalltalk system? I thought people these days used Outline views, as in Eclipse and JBuilder.
As many times as people post the numbers all over the net, you would think people would get the idea that java isn't slow. I'm not going to bother adding another link to some benchmark showing the progression of java from 24X slower than C to ~1.5x C and continuing to improve. In fact, in some places, it ran faster than C (compared to Intel's compiler).
.NET platform anytime in the foreseeable future? Even if they did, Mac and Solaris are not going to come with the ability to run C# programs out of the box. If you wrote your code in C#, you aren't going to be running it on anything but windows for quite some time. Right now, you can have Java up and running on you system without any problem. I just point people to java.sun.com, and even the least intelligent seam to get it working. Anyone that can download and install winzip, can do the same with java. It's not a big requirement.
:) I read another post on here that claimed PERL would be the next thing, but I just don't see that happening. Do you really think that Perl is going to be user-friendly to the end user? You can get just about any package you need from CPAN, but you have to install it, and face it, CPAN is not as easy as just grunting as you download the 20M or so that is the JRE.
.NET Developer Studio. On the Java side of the world, you can get along just fine with JBoss, Linux, Eclipse, and NetBeans/Forte, all for free. I guarantee you when you add up MS licensing fees, !/$ (read: bang per buck) award is going to go to Java every time. That's how they measure it in the Java world... go check out ECPerf over at theserverside.com.
They wouldn't have to worry about installing and configuring Java if MS didn't hate it so much. Do you really think that a linux user or a mac user is going to be setting up a
Sun recently worked out their differences with the Apache people. Any non-profit organization can now be certified for free as far as I understand. Go check out jakarta.apache.org, it should still be there.
Java is not getting more proprietary! There are several compliant Open Source JSP servers(Tomcat and jetty to name a couple) and at least two open source J2EE platforms (JBoss and Enhydra).
On the other hand you have the FUD claims of MS. They took the Java PetStore tutorial, and used it for a benchmark. Just to be fair, Larry Ellison is probably guilty for doing that to begin with, but no one took his "Oracle Challenge" seriously because it was just silly. Just so you know, Oracle put together a performance enhanced version of the PetStore, and beat MS again, just proving once and for all, it's how you program, not what language you use.
I had a similar opinion to your's a few months back, but after taking a look and testing it myself, I was quite suprised. Java didn't become popular by being slow, difficult, or a licencing hassle. I don't know whether I believed it because I actually thought it was true, or because I was too D***ed lazy to play with it. You'll find it quite interesting if you bother to take a look at what all you can do with it and how fast it really is.
The standard API comes with as much functionality as Perl with every CPAN module available
My point is, Sun is very willing to work with the Open Source community now, much more than MS, and Java is not the beast it used to be. Java also has a large chunk of the mindshare, and MS is not going to steal one single developer from the Java platform until they know that their software can be used by all their clients. If you develop an enterprise application, you will be running it on windows, and you will be paying constant upgrade fees for more users, newer versions of windows, SQL Server, and the
Karma Clown
Actually, it's the other way around. They can be "static", meaning they are only accesible from the same source-file, but you have to explicitly make them "static". "extern" is the default. And that is unfortunately the only separatiorn you get, there are no namespaces, classes, modules, packages, nested functions, or any other means to keep things out of the global namespace, except for the concept of a source file with static functions.
But on to java... Since java has the concept of packages, it wouldn't be that bad to allow functions lying inside a package. But it's not really such a nuisance to prefix with a class-name either. The difference between Quaternion.add(a,b) (Java), and quaternion_add(a,b) (C) isn't really that bad. On the other hand, with overloading on arguments, you could simply end up with add(a, b) in Java (if it supported functions), and a+b in C++ (since you can overload operators as well).
I guess some people like it a bit more explicit. Personally, I'm a bit schizophrenic about the issue. I like brevity, of course, but it can also make it really hard to understand other people's code (and in the case of C++, even my own). I think this last objection could be removed with the help of better tools, but currently I know of no such thing as a compile-time debugger for C++ templates, or a slower-but-smarter typechecker for languages using Hindley-Milner type-systems (ML) that can tell me what's really going on, or at least give me somewhat reasonable error-messages when something goes wrong, so I can screw things up on purpose to find out what's really happening.
I don't know what to do about "BufferedImageMediaStreamWatcherHandlerFactory", though. If it's really an abstract factory for creating handlers to watchers to buffered mediastreams of images, then it's really a well-chosen name, but I don't think that's a pretty common abstraction that would end up all over your code (and if it was, I'm sure you would come up with a shorter name). It's just like "assistant for the the chief packaging master of buillon dice" (or translated into norwegian: overbuljongterningpakkemesterassistent, (a well known song by Øystein Sunde))), is actually a very good descriptive job-title, but if you were working with him a lot, you would just end up calling him the packaging assistant.
I disagree. Microsoft have been trumpetting .NET and C#, and had them in Perpetual Beta Mode(TM) for nearly two years. Many of us (I work in a Microsoft Partner software house, for example) have taken a look at C# in that time, quite a few investing significant time in researching what it can and can't do, where its strengths and weaknesses lie, etc. And now, as the floodgates open with the full release of Visual Studio .NET, you know what? Most of us aren't shifting.
There is simply no compelling commercial advantage in moving to C# for most commerical development. There are exceptions, and I'm sure they'll go with C# given time, but they make up a small minority of the whole software development industry. After all, we've been writing every type of application there has been for years without Web Services, etc. Why would anyone think that all these different fields would suddenly benefit from a tool that, frankly, is totally irrelevant to them?
In summary, it's plenty early enough to form first impressions, and first impressions count.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
But that's just not true. The Java community as a whole displays a staggering ignorance of many basic principles common to other programming languages and computer science in general. I've heard more crappy arguments from Java-ites trying to justify the lack of some language feature than from advocates of all the other languages I know put together. (Sadly, I am not exaggerating.)
Free functions, multiple inheritance, operator overloading and templates are my favourite examples. There are perfectly sensible reasons to include all of these features in some languages, and times when using them is much easier than the alternatives. However, I don't have a problem with a language that, for some sensible reason, chooses not to include them. I do have a problem with people who discount them on the basis of lousy arguments and lack of thought. My favourite utterly naive statements are:
Anyone reading who actually agrees with any of these statements needs to do some more research before they start having a go at the features concerned.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Be careful with these numbers, though. It's very hard to estimate how may people actually use or actually know a particular programming language. Number of downloads is certainly not the way to do it; I am personally responsible for three of those downloads, since I like to keep up to speed and have reinstalled a couple of times recently, but I am not currently programming in Java.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I very much doubt that. There are probably millions of programmers in the world who have some familiarity with that combination, and hundreds of thousands who use it every day. There are certainly milions of man-years invested in existing code using that combination. Why on earth would companies who've made that investment just throw it away and switch?
What is it that makes you think we're all going to give up the C++ and Java we use at present and switch the C#? A few years ago, people claimed Java was the next-generation language in the C/C++ family. Now, C++ is still going strong, Java still hasn't caught up in popularity by any metric I know, and people are questioning how long Java will last. (Meanwhile, work is starting on the next C++ standard, driven by an enthusiastic and informed community of experienced developers.) So, now, C# evangelists (mostly hired by or sucking up to MS, it should be noted) are claiming that it, too, is the next generation language. Why is this time going to be different? Why should I believe that they are going to kill Java or C++? Where is even the slightest evidence for this, beyond MS marketting hype?
No, I think the world will continue to use Java, C++, VB and many other successful languages for a long time yet. And why shouldn't they?
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Well, lessee... How about Open office? or (looking back) their contributions of NIS/NFS? (originally called YP or Yellow Pages by Sun and distributed today with most distros)
Oh, and don't forget JXTA , which provides very .NET-like P2P connectivity between any two devices.
Is Sun out to help Open Source? Not really, they, like ANYBODY TRYING TO MAKE A LIVING, are out to promote themselves, but at the very least, they don't seem to have any problem co-existing with OSS initiatives, having founded quite a few.
Oh, and openoffice.org, which consumes massive bandwidth (Open Office is 50+ MB per download) is primarily funded by Sun...
Love 'em or hate 'em, but don't spread FUD...
I have no problem with your religion until you decide it's reason to deprive others of the truth.
So what would really be the correct choice, should you call it megacorp.employee.food_division.buillon.packaging. MasterAssistant, and just import that namespace when needed? Personally, I find that even more offensive, because you would then rely on package prefixes to differentiate different kind of employes. The inability of java to introduce a local shortcut for an extraordinarily long name (and long names is sometimes needed, just as shortcuts to them are), is definitely at fault.
I give up. Ok, let's admit it, java sucks in quite a few places, and this is definitely one of them.
What language is XML implemented in?
now we need to go OSS in diesel cars
I'd make the odds out to be 0:100. If no classpath is specified, Java assumes the current directory to be the first place to look and then in the system standard places (which is where the java standard API classes will be found). So if you call the java application you want to run from the current directory and you arranged your classes according to packages (as the compiler does for you), it will just work.
The other note here is that if you package your java app in a jar file (which makes it easier to distribute, take up less space etc) you can specify the main class to use and then all you need to do is:
java -jar myJar.jar
and your program will run. On OS X and probably a few other systems you can just double click the jar file and it will run.
It is worth considering that on server side projects like what your company is running there are often good reasons to put class files, jars and wars in "strange" places and then use the classpath to point to them as this can make things easier to manage on a server that has numerous apps being delivered by one server instance. Even so, it's no more difficult than specifying where gcc can find it's libraries etc, etc.
In practice, few companies switch servers anyhow unless something drastic happens to the vendor.
Over a thirty year time span?
There is a lot of code that has not been changed in the last 30 years, and a lot more code that will not be changed in the next 30 years. The code is long, tedious, dull, boring, etc, none of which is helped by a better language.
Tweak-free isn't so much a problem as implicit and insidious assumptions about implementation details. Both work, but they don't work the same way.
Can you imagine a bunch of COBOL programmers thinking Lisp?
Can you deterministically determine rounding errors in Perl or Python?
True, it was intended as a hypothetical example.