ZNET is reporting that "Developers using Sun Microsystems Inc.'s Java programming language will outnumber those using the C/C++ languages by next year, the findings of a series of studies conducted by Evans Data Corp. and released late Wednesday show". Do you agree or disagree?
Read Article Here
I disagree. The rate at which things are going, soon Java programmers will be without a job. Everybody is cutting back and there is no sign of any improvement in the near future. The market has not affected the C++ front as much as it has affected the Java community.
The reason java programmers lost job and C++ guys are still keeping their jobs has to do with the way new economy went bust.I still believe economy will churn out more java jobs than C++ as J2EE becomes more and more used for business/internet programming.
I disagree. There is a huge shift from legacy middleware technologies (such as IBM MQSeries, BEA Tuxedo) to J2EE based technologies. The reason is simple - a standard has arised and there is strong community around it. The standard-based technologies are cheaper to maintain and safe to invest. That's why a lot of customers is selecting J2EE/XML based solutions. The market situation has a good and a bad side. The bad side is: dotcom's are dead (e-shops, portals etc. are in trouble). The good news is "B2B looks good". Look at the web-services, e-marketplaces, point-to-point B2B. These solutions are being built using Java.
This J2EE thing is a bigger hipe than you might think. Most of the standards are just coming nto place. Most of the vendors don't even support these standards the way you would expect. For example, the so called IBM websphere has no support for even open source framework like struts without having to write a thesis to somehow get it to work. Application servers are expensive and most sales people commit to things that has nothing to do with the application servers they are selling. Ignorant clients fall pray to this and find that they are already commited to a huge investment that they are trying to protect. I think more and more people are getting fed up of this J2EE mess. JSPs are the only good thing to come out of it. All the rest is application server specific. You change it and you change a lot of your code as well. Maybe not as much, but still it is annoying to do this in a large environment. All told SUN has got you by the balls and a lot of people are screaming in pain right now.
"I think more and more people are getting fed up of this J2EE mess. JSPs are the only good thing to come out of it. All the rest is application server specific. "
Man, you come straight out of a comic book. What planet are you from? Are you a microsoft employee or something? Wow. I didn't think there were even people around that thought stuff like that. Are you one ofthose guys that thinks professional wrestling is real?
G E T A C L U E.
I applaud your sense of humor. Maybe you have watched Enter-The-Dragon too many times. I like Jim Kelly myself.
Can you show me how to drop an ear file from one app server into another and make it work. I have seen this performed, at the MIRAGE in LasVegas, by Lance Burton. Of course, we can't all be like him, can we ???
"I applaud your sense of humor. Maybe you have watched Enter-The-Dragon too many times. I like Jim Kelly myself."
LOL, I can't believe you recognized that! Another martial arts fan, cool. At the risk of getting in trouble for the slight aside, I'm a blue belt under Carlos Machado (by way of Allen Mohler) here in Dallas... been training about 3 years. cya
Coming from a Computer Graphics background, there is no doubt in my mind that for real-time graphics, C++ has no comparison. Java is not even an option. For web-based applications, Java has no comparison.
But, Whether Java is going to overtake C++ or not, I am glad to know that I have a friend in Dallas who is a martial arts fan. Hats off to you. I live in chicago.
"Coming from a Computer Graphics background, there is no doubt in my mind that for real-time graphics, C++ has no comparison. "
Actually, it does... assembly is the fastest for stuff like grephics and device drives. You can't beat it.
"But, Whether Java is going to overtake C++ or not, I am glad to know that I have a friend in Dallas who is a martial arts fan. Hats off to you. I live in chicago. "
Likewise... good luck to you, hope you're surviving in this terrible economy. I had 2 friends (one of them my BEST friend) laid off last week. People are falling all around me.
"But, Whether Java is going to overtake C++ or not, I am glad to know that I have a friend in Dallas who is a martial arts fan. "
Check out the pics of me in tournaments and stuff here:
Looking back at C and especially at C++ is pretty scary after done any Java development.
I think that C is still going to stay because this is a perfect language for designing system level applications.
I think that C++ does not have its place in the OO space, this language is so cumbersome (I think that this is mostly the reason why Java was created: keep the C syntax and remove all the ugly C++ stuff).
So even if Java is not going to overtake C or C++ (who really cares ?) next year, this language has many advantages that C or C++ don't have. And because of the GC and packages, development time and debuggint process is way shorter than the 2 (C)ited languages.
Java will naturally overtake C and C++ in the future, or anyway the IT managers proning C or especially C++ (Golden Hammer Heads ;-)) will be soon overtaken by new Java aware managers.
So much for ringing bells and whistles on object oriented methodology crap. No one wants to use it. Everyone wants to say they do, because it is kool. Actually, it is great from a maintenance and enhancement perspective. But, to get the damn thing out of the door, you need to swallow the bullet and deliver crap. Then write crap to patch it up. Then write another patch to patch that crap. Then version your crap with point releases. Pretty soon you see buying patch instead of the actual product.
Sigh. So many opinions, yet so few insights. There will always be someone who will put down Java, and if not Java then OOP, and if not OOP, then... you get the idea.
Listen, I work for a very large organization, and we happen to have a very solid Java application which is PURE Java. Performance isn't an issue. I've also written network controllers (dynamic route creation from point-to-point over 100+ switches and routers) written using J2EE-based components. Why? Simple, the reusability.
People are forgetting one of the main advantages that the J2EE platform brings to the table: scalable, reusable, dependable components. The common argument against Java seems to be performance and reliablility. Well then, why don't we just write everything in assembler then? What could be faster and more reliable? Oh, but assembler is too hard. Well then, why not C or Pascal? Oh wait, they're difficult to use and can be dangerous at times (especially C, see pointer overruns). C++ is nice, it offers us some nice power and some nice OO features. Oh but wait, it's still a type of hybrid language which isn't purely object oriented.
Java is nice, it gives us a (reasonably) true OO environment, plus automatic garbage collection. Sure it was slow in the begining (nobody can, or should, deny this), but the recent VMs have definitely decreased this problem. And if you can't write good code (threads, etc.), don't blame the language.
J2EE has very few features that are new. CORBA had a lot of these similar concepts, but they were often difficult to implement. If they were easy, then everyone would be doing server-side development using CORBA. This is just an example of course, there are others that can be used but I don't want to get into those here. :-)
It seems obvious that the arguments being used here against J2EE come from people who haven't researched it very much. JSP is the only good thing that came out of J2EE? Come on now. Can these people honestly tell me that they can write a truely distributable DB application using C or C++, complete with transaction management, load balancing and cluster support in a reasonable amount of time? I doubt it. I'm sure there are some people that can do it, but they are very, very good.
Java is new, and it is young. Can any other language claim such a broad expansion of its features in the first 6 years of its inception? Not really.
My opinion on the question posed to us (it's about time, eh?) is that Java developers will outnumber C++ developers by the end of next year. Colleges and Universities are teaching more Java than C, C++ or Pascal, and companies are moving towards J2EE as a viable platform because of its component-oriented nature. I suggest that people research their arguments before posting them. ;-)
I think the main issue is one of quality. Sure you might have 1000's of fresh graduates who did some some Java courses, but the real problem comes from the lack of experienced Java skillsets (or insert your favourite technology here). It's like changing a plug and then calling yourself an electrician... perhaps this means that electricians will be outnumbering plumbers... ;-)
Personally, I think C/C++ has already survived many technology shifts across a number of years and will continue to do so for the forseeable future - even if there are peaks in other language/technology hybrids...
... and let's not ignore the programmer masses moving from VB to the new language-agnostic .Net CLI...
Lee: "I think the main issue is one of quality. ... Personally, I think C/C++ has already survived many technology shifts across a number of years and will continue to do so for the forseeable future - even if there are peaks in other language/technology hybrids..."
Mentioning C++ and quality as two things that go together is a bit odd. For producing quality applications, Java is a significantly more resilient and robust platform than any C++ / library combo. When I worked in C++, about 80% of my time was spent carefully coding memory allocation, clean-up and error handling, while in Java it accounts for about 5% (tops). While we had no memory leaks or GPFs in megabytes of C++ code (Win16 and Win32), the cost of producing working, quality code was unbelievably huge. Thinking back to one particular 1MB+ C++ project, which I worked on from start to finish, I realize it took about 9 months. I could implement the same in about a quarter of the code in Java, and could do so in about a quarter of the time, a good chunk of which would be spent in design, just like in the C++ case.
There really is no comparison. The C++ language and libraries work, they will continue to work, and they will continue to be used. Maybe some drivers will get built in C++. Maybe some games. New business applications will not be built in C++. It just doesn't make business sense.
Microsoft understands this. That is why they copied Java to make C#. That is why they are replacing the Windows API with C# interfaces and wrappers.
Demand for C++ will continue to be strong, just like demand for COBOL was strongest as developers fled it en masse. Stick with C++ if you like it; I am glad to hear that someone is willing to support it. ;-)
You may as well argue that red wine is better than white wine. In the end, "better" doesn't apply because context is everything. I've also made the switch from C++ to Java, and frankly I see many more similarities than differences. A good engineer can work productively with any mainstream language; a bad one will always write crappy code.
Most unfortunate is the assumption that we're supposed to bet our careers on specific technologies. For what good reason does somebody have to be a C++ or Java programmer, but not both? Sun and Microsoft (The Dark Side and The Darker Side) are just trying to balkanize us developers to promote their respective strategies. Our duty as engineers is to remain rational in the face of cheerleading rubbish.
Hmmm... C++ != quality is rather strong opinion, especially given the code base of C++ out there. I think everyone understand that writing "plumbing" code is a waste of time and C++ took the concepts from C of a "light" language. Everything is then dependent on libraries, which are specific to whatever transient technologies are around. As for cleaning up memory/resources, then smart pointer classes usually make this easier. But yes, I agree that Java (and any .Net compliant language, or many other language implementations) address many of these plumbing issues, allowing us all to dumb down a bit. :)
I agree with what someone else in the thread was saying about not committing your career to a single language/technology. Those of us who have been around for a while, have seen a large number of technologies come and go. We have also written using a LOT of languages using a LOT of different technologies. Java is just another of the C-family languages. For those of us with a C childhood, then we love Java for it's familiarity. But experience also says that this is not the language to end all languages, and I hope we can find ways in which deliver a lot more value to the business than writing in the C-family of languages. It's always a good idea to be looking to the next technology shift, coz they come thick and fast!
now c++ is the language of choice for those that are GOOD and know what they are doing and exact great control over what they are producing. Since in the beginning when unix was young and few people programmed, they HAD to be good in order to produce quality software - unix stability is only one of the results of great code, right? c/c++ is great - so much control over what you are doing! but then more and more people decided they could be PROGRAMMERS too and lamers of all kinds entered the field. naturally something so HARD as c/c++ was not for them, how can feeble minds understand the logic and principles behind c/c++ to make effective and error-prone code? so for these people an EASIER and more high-level language is needed, just like java - simpler, lets you forget most of the details, gives you less control though. I admit it is easier to write code but it gives me less power! I am good, I want to have control over every little detail, should I wish so, and then there are all the classes out there, and COMs, free of charge and reusable and cool - saves a lot of time, get a free class, read it quickly, change what you want (if you want to) and hey, a week's job of writing code is done in 2 hours! I am good, I will always have c/c++ as my first choice ever! I program since 1995, I've coded protected mode kernels in c/asm, I've written unix daemons in c, networking software with GUI and services under windows in c++, DirectX and DirectShow games and filters, I've coded in C#, networking/swing programming in Java, I can tell you there is nothing like C/C++ - if you know how to use it and have brains! for the rest - stick to Java, it is EASIER... :P
I can't agree with you more about the intention of J2EE. It is still long ways from being a viable solution to most problems as it claims. Definitely a better option than CORBA, unless you are doing legacy system integration, in which case, your EJBs are talking to corba components through an ORB. There is no way around this. Otherwise, the pain to deploy and test without a proper environment is too much. There is not a single application server that has a robust implementation of EJB 2.0. It is too new. EJB 1.1 is crap. C++ has none of this. I agree. I have done extensive development using C++ in the past. I have been a JAVA user for about 4 years now. Java as a language is very good.
I did not say (and didn't mean to imply) that good client applications can't be written in Java. They can, as your example shows. I was talking about the more global scope. This is where Java will be measured against other solutions. Out of 10 Java client-side applications, 9 will be about 5 times slower, eat at least twice as much memory, require a larger installation and have a much longer start up time. The one application remaining might be close to "ordinary" Windows apps. I've never seen one that is as good as good in any of the categories above. But even writing this App requires exceptionally expirienced developers and and an arbitrarily longer development time, as the statistics show. Even if 3% of the companies can afford it, I can't see the industry en masse embracing such a solution. This is what this thread is about, and that's what I was commenting on.
By the way, I completely agree with the point made here about so called "Java programmers" that come from universities, training courses, etc. The majority of them may be "programmers", but definitely not "developers". I've seen some graduates that don't know how to accept command-line parameters (and no, I'm not exaggerating). The same is true of C++, by the way (as well as the example).
I think Java is probably going to overtake C++ in some arenas, specifically the server-side, in the near future. Virtually all vendors are moving to J2EE based solutions. Microsoft is also moving to .NET where most the original C++ projects will probably move to C#.
However, there are three major arenas where I doubt this will happen (soon, anyway):
System programming: to my knowledge, most development in this area is done with C++ (rather than C). I personally see no reason to prefer C to C++, atleast in new projects (i.e, without a large existing C code base). Java by definition can't compete here, atleast not for most projects.
Client side: using Java on the client side presents many problems for most project. The added size of the JVM is one problem. Another problem is that running a Java GUI on windows is allmost unacceptable, because it is noticeably slower (I've seen a ~10 times factor) and is not nearly as well integrated into Windows as, say, MFC apps. Efficiency is also an issue. Java programs tend to take up much more RAM and run slowly. Java, as a runtime-optimization platform, favors long-lived apps and does not do as well for relatively short-lived ones (such as most client-side apps).
Scientific, numeric: In this field Java has a number of severe problems. One problem is Java's floating point arithmetic which "hurts everybody everywhere" (it's a name of an article. I don't have a link for it, but if someone wants it I can email him a copy). Another major problem is Java's lack of support for "concrete datatypes", i.e types with value-semantics. This also spans to lack of operator overloading. Finally, Java does not (and arguably cannot) have a foundation library as powerful as the STL. This might be resovled when parameterized types (templates) make it into Java, in 1.5. Even then, lack of support for primitive params may hurt this specific field. I've also seen suggestions from one of the Java lead architects (I think it was Joy) to add "concrete types" to Java, along with operator overloading. However, this is a huge change and will probably not be here for a couple of years.
Of course, all of this is just MHO :)
One of the more annoying things is when people have opinions on topics for which they, honestly, shouldn't have an opinion as they lack sufficient information.
Anyway, re: Java on the client. We've developed a relatively large, multiplatform, pretty and user-friendly Swing based application that runs well on a 200 MHz pentium (though you do need 64MB minimum). It runs well on Windows and Solaris, and general user opinion is that it responds quickly, and is quite nice to use.
How, you ask, did we achieve this? Simple - by taking advantage of the fact that Java allows one to relatively easily develop multithreaded applications, and optimizing where required. Its damned annoying using Swing applications where this isn't done (including JBuilder - its SLOW) because they give Java a reputation it no longer deserves.
As for the topic of this thread, I have insufficient information :)
- Struts should be a drop-in with WebSphere 4.0. I'd be very surprised if it wasn't.
- Do businesses still want to write a low-level systems application in C++?? C++ is still an excellent language for those uses, but J2EE's growing maturity is eliminating the need for businesses to have to "reinvent the wheel"... a business developer shouldn't have to focus on infrastructure programming unless absolutely necessary -- it doesn't provide enough value for the effort when there are plenty good vendors out there that do the same thing.
- when people diss OO and then rant about how "we have to deliver crap to make the deadline" impress me with the fact that A) they obviously hate their job, B) they want other people to hate their job, C) they know that many people actually succeed with OO, and don't deliver crap, so they lash out in public forums for no particular reason other than to make (A) and (B) widely known.
To each his own.
You have completely missed my point, my friend. The point is to make it clear that crap need not be delivered with proper software process. Whether it is C++ or Java, a methodology should be followed. I love my job more than you will know. Don't make personal statements on people you don't know and flount your ignorance. There are other forums that will aid you in venting your frustration. And, no, IBM websphere 4.0 needs some serious configuration before getting struts to work. I have tried it. They have a great deployment tool, though. Sadest part is, most clients have serious reservations against software methodologies. As Ignorant as they are with these technologies, they dictate a lot.
Dont forget java clients on mobile devices. docomo platform, symbian platform, j2me platforms and the likes of nokia, motorola and ericson phones supporting one of these platform. I expect j2me developers to outnumber j2se developers in about five years. I have already landed a contract with a major telcom portal provider over here in europe and expect things to get only better.
I totally agree with pretty much all your comments.
I've seen this argument before, it was assembly vs. C, and I also saw it in C vs. C++. People, the "it's too slow" argument lasts a few years until computers get so fast you can't tell the different, then people move on to what is more reusable and maintainable, and that certainly ain't C++. After using Java, I'll NEVER go back! :)
hi Gal Binyamini ,
Please mail me floating point article .
my id is rsujeet at vsnl dot com.
thanks and regards
Since I got some requests here and by email, I tracked down the link for the article. It's in:
Note that some parts are hard to understand if you're not in the numeric calculation field (atleast, it was hard for me). Good luck :)
Speaking about floating point accuracy and Java -
latest release of Matlab (6.0) allows you to program
any numerical algorithms in Java with the same
accuracy as in C and C++.
The article you referred to is very outdated (1998).
It tries to scare people off, not to explain and solve
the problem. It is not really scientific paper, but
more like marketing speak with scientific jargon -
that is why it is difficult to understand it.
The problem with floating point accuracy with Java (IMHO)
was that Java treated all floating point calculation
equally on all computers while you can take advantage of
extended length of your floating point register in Intel
(80 bits vs 64 on other machines). So if you keep your
intermediate results in 80 bits you can get more accuracy
at the end.
Initially Java did not use this capability. However, with
introduction of StrictMath classes Java solved this problem.
After spending Quite a few years in COBOL/C/C++ based system programming, Last several months i have been doing J2EE based Applications.
I feel to develop a simple, quick project java is the best bet.You could manage with a inexperienced team because java is easy to learn and wide variety of third party tools are available.But to develop a low level, reusable System software Java is no match to C++.
one of the reason why there will be more java programmers than C++ could be , Now a days the colleges and training institutes are producing more java programmers than C/C++.
Still majority of the companies would maintain their critical systems on C/C++ rather than Java.
Only the read-only(non-critical) aspect of the business will web enabled by using Java.
"You could manage with a inexperienced team because java is easy to learn and wide variety of third party tools are available."
That's nuts. Sure, compared to C++ is slightly easier, but I get tired of people saying it's easy. It's easy to learn the core language, the all the principles of OOP etc are the same no matter what language you're talking about, and I imagine your average vb guy making 40k a year would have a hard time using Java effectively. Also the API's are huge.
I agree. Java has evolved from being a platform-independent language to a platform itself. It's all about commerce. Java requires much less delelopment time, only problrm is efficiency. And with faster and faster JVM's coming, I see no reason why Java shouldn't overtake C/C++.