I think Jerry Lyns point is not that Java will kill C++, but that C++, like a badly cared for 1970 Chevy will simply corrode to the point where it collapses under its own weight. Java is just the latest invention that uses modern thought in its development. And though Java is not perfect, things could be worse. There could exist no Java and our next hope for technology could be Visual Basic....
authors shudders at the thought...
Java Speed tests
****Java is in version 1.3 right now, It means that it has been developed only few years. Visual C++ is in version 7 if I remember right, what is Java''s version? 1.3? So, it means that VC7 has C + Ansi C++ + it''s own 7 versions behind it when Java has only 1.3****
Do you realize that some company likes to release their product in versions of 1.0,1.5,2,4,6..., while Sun likes to release Java in versions of 1.0, 1.02, 1.11,1.2,1.2.2,1.3...?
In other words, the version number tells nothing about the product''s maturity.
Do you realize that some company likes to release their product in versions of 1.0,1.5,2,4,6..., while Sun likes to release Java in versions of 1.0, 1.02, 1.11,1.2,1.2.2,1.3...?
In other words, the version number tells nothing about the product''s maturity.
Try to write a game in java and see the *ucking garbage collector freezing it ....
Edited by - Strauss on May 12, 2000 1:24:28 PM
Edited by - Strauss on May 12, 2000 1:24:28 PM
Actually there are several instances where games have successfully been developed in Java with out the freezing problems that you imply are endemic to Java based games. Admittedly C++ will continue to be used for commercial development, but Java is very capable of being used for amateur development and commercial development in some specialized cases. You can find a list of some of the successes on the Java Game Development FAQ (I have more to add to the list, but I haven’t had the chance yet):
http://games.cpbinc.com/faq/
http://games.cpbinc.com/faq/
totalnewbie - you are right, you can''t tell much from the version number of the language. But all the 1.00, 1.02... that have been released with Java weren''t new versions, they were simply bug fixes. That''s all. There have only been three different versions of Java: 1.0, 1.1, and Java 2(1.2). The new release of Java 1.3 is just another release of 1.2 with bug fixes (for the most part). The point is, C is deeply entrenched and isn''t moving much at all. This is sad to see because C is a great language, but in this world of information technology, you are either going ahead or falling behind. There is no middle ground.
Strauss - sorry to hear about your problem with the garbage collector! Unfortunately, most times people have "problems" with the GC, it comes from poor coding, not the GC. The GC is an extremely low priority thread and so shouldn''t do much to your program except not collect garbage as quickly as you would like!
Jerry Lynn - your comment sounded like you don''t think that serious professional coding can be done with Java (Java is very capable of being used for amateur development and commercial development in some specialized cases). I know the comment was meant for defending Java, but it seems you, like many others, don''t really believe that Java can do increadible things. Everyone that really wants to know the truth needs to visit this sight, http://www.gamedev.net/columns/features/diariesandsites/javaextreme/gdemos.htm. Download the Lucid Dreams demo and you will be amazed that it is Java doing this stuff! There is a flyby over a desert scene, INCREADIBLE. This stuff is rendered realtime and it looks like a pre rendered movie. I am willing to bet that if you take a look at it, someone will post back here that they don''t believe it is for real because "it hasn''t ever been done before."
People, I am here to tell you, Java isn''t just for amateur development anymore. It is just as "powerful" as the tried-n-true C++ stuff (not counting low level stuff). Throw off the shackles of your mind that won''t let you embrase this "slow and slow can be" language!
If you can''t win, make sure the one that beats you breaks the record!
Strauss - sorry to hear about your problem with the garbage collector! Unfortunately, most times people have "problems" with the GC, it comes from poor coding, not the GC. The GC is an extremely low priority thread and so shouldn''t do much to your program except not collect garbage as quickly as you would like!
Jerry Lynn - your comment sounded like you don''t think that serious professional coding can be done with Java (Java is very capable of being used for amateur development and commercial development in some specialized cases). I know the comment was meant for defending Java, but it seems you, like many others, don''t really believe that Java can do increadible things. Everyone that really wants to know the truth needs to visit this sight, http://www.gamedev.net/columns/features/diariesandsites/javaextreme/gdemos.htm. Download the Lucid Dreams demo and you will be amazed that it is Java doing this stuff! There is a flyby over a desert scene, INCREADIBLE. This stuff is rendered realtime and it looks like a pre rendered movie. I am willing to bet that if you take a look at it, someone will post back here that they don''t believe it is for real because "it hasn''t ever been done before."
People, I am here to tell you, Java isn''t just for amateur development anymore. It is just as "powerful" as the tried-n-true C++ stuff (not counting low level stuff). Throw off the shackles of your mind that won''t let you embrase this "slow and slow can be" language!
If you can''t win, make sure the one that beats you breaks the record!
If you can''t win, make sure the one that beats you breaks the record!
Wow! Someone who is a more fanatic defender of Java game development than I am! I did not think it was possible = )
But to counter your point: Even assuming that you could achieve the same client-side performance in Java and in C++ - which you can''t right now - there are still numerous problems with Java that will prevent the typical commercial game from being developed in Java. Just a few of them include:
- Most of the API and toolsets one would use to develop games are developed towards using them in C++ (such as the 3D positional sound API’s like EAX and graphics API’s like DirectX). If you have a big budget game that requires the absolute in performance why would you accept the performance penalty of accessing these API''s through native interfaces?
- Since most of the game developers out there work in C++ you have a large base of C++ development and project management skill. Java still represents a project risk that many companies aren’t willing to invest in.
- Most of the current crop of engines that companies extend to make their own games have been written in C++ and require C++ for mods
Of course, I think these are issues of time rather than limitations in the Java language.
- Just my humble opinion...
But to counter your point: Even assuming that you could achieve the same client-side performance in Java and in C++ - which you can''t right now - there are still numerous problems with Java that will prevent the typical commercial game from being developed in Java. Just a few of them include:
- Most of the API and toolsets one would use to develop games are developed towards using them in C++ (such as the 3D positional sound API’s like EAX and graphics API’s like DirectX). If you have a big budget game that requires the absolute in performance why would you accept the performance penalty of accessing these API''s through native interfaces?
- Since most of the game developers out there work in C++ you have a large base of C++ development and project management skill. Java still represents a project risk that many companies aren’t willing to invest in.
- Most of the current crop of engines that companies extend to make their own games have been written in C++ and require C++ for mods
Of course, I think these are issues of time rather than limitations in the Java language.
- Just my humble opinion...
Assorted quotations...
"It is just as "powerful" as the tried-n-true C++ stuff (not counting low level stuff)."
I think this shows that you are missing the point. C++ is inherently a low-level high-level language. Part of the power of C++ is that I can have this wonderful object hierarchy, with all the benefits of object-orientation, and in the murky depths of one of these classes, I can have an asm block optimised for near-perfect performance on the target platform. If Java ever moved to allowing that, it would have to shed the write-once, run-anywhere tag. Making it effectively a garbage-collected C++, not really a significant improvement. And garbage collection is possible in C++ if you want it, but if not, you can have perfectly fine-grained control over your memory allocation too.
Doesn''t Java also lack useful things like enums? I''d hate to have to declare 101 static const ints, and then still lack the typechecking than an enum can bring. What''s the Java work around for this? No multiple inheritance either: although some OO purists would say that multiple inheritance introduces some ambiguities, there are plenty of cases where it makes sense to derive something from 2 classes directly rather than making some useless intermediate class.
Let''s see, what else... unwieldy object chains such as blah.blah2.blah3.blah4.blah5(something), it lacks unsigned data types, no operator overloading (thus, can''t use new types intuitively), no friend functions (can half-simulate this with packages, but seems like a long-winded and awkward approach), no preprocessor (I think), etc etc.
"Java still represents a project risk that many companies aren’t willing to invest in."
Well, right now it would be foolish to do so if your company depended on it. What is the program going to run on? Native .exe? Ruins the whole Java concept, no? Or maybe Internet Explorer or Netscape? Hmm, how to reduce sales and/or annoy customers: force your program to require one of the 2 least stable pieces of software in history to play it...
I don''t see Java superceding C++ at all, not with the above limitations. Java has several advantages which make it attractive for many projects, just as, for instance, Visual Basic does. But C++ is still the jack-of-all-trades (and master of none? Maybe. But big projects often demand flexibility) and I predict it will not be less popular than Java until perhaps some 3rd language supercedes them both.
"It is just as "powerful" as the tried-n-true C++ stuff (not counting low level stuff)."
I think this shows that you are missing the point. C++ is inherently a low-level high-level language. Part of the power of C++ is that I can have this wonderful object hierarchy, with all the benefits of object-orientation, and in the murky depths of one of these classes, I can have an asm block optimised for near-perfect performance on the target platform. If Java ever moved to allowing that, it would have to shed the write-once, run-anywhere tag. Making it effectively a garbage-collected C++, not really a significant improvement. And garbage collection is possible in C++ if you want it, but if not, you can have perfectly fine-grained control over your memory allocation too.
Doesn''t Java also lack useful things like enums? I''d hate to have to declare 101 static const ints, and then still lack the typechecking than an enum can bring. What''s the Java work around for this? No multiple inheritance either: although some OO purists would say that multiple inheritance introduces some ambiguities, there are plenty of cases where it makes sense to derive something from 2 classes directly rather than making some useless intermediate class.
Let''s see, what else... unwieldy object chains such as blah.blah2.blah3.blah4.blah5(something), it lacks unsigned data types, no operator overloading (thus, can''t use new types intuitively), no friend functions (can half-simulate this with packages, but seems like a long-winded and awkward approach), no preprocessor (I think), etc etc.
"Java still represents a project risk that many companies aren’t willing to invest in."
Well, right now it would be foolish to do so if your company depended on it. What is the program going to run on? Native .exe? Ruins the whole Java concept, no? Or maybe Internet Explorer or Netscape? Hmm, how to reduce sales and/or annoy customers: force your program to require one of the 2 least stable pieces of software in history to play it...
I don''t see Java superceding C++ at all, not with the above limitations. Java has several advantages which make it attractive for many projects, just as, for instance, Visual Basic does. But C++ is still the jack-of-all-trades (and master of none? Maybe. But big projects often demand flexibility) and I predict it will not be less popular than Java until perhaps some 3rd language supercedes them both.
Kylotan - well articulated. I am not trying to say that Java will take over C++ (maybe it will maybe it won''t). All I am saying is that the "limitation" of speed that everyone keeps bashing Java with, isn''t there anymore. As far as the multiple inheritance thing, Java''s workaround is used with interfaces. Close to the same thing, but not quite. It allows you to cast one object into many different ones (as many interfaces that it implements).
"Java still represents a project risk that many companies aren’t willing to invest in." Well my answer to this is that there are many companies that ARE willing to invest in. As a matter of fact, there are more networking applications being written in Java than there are in C. One reason is because it is so easy to use in a networking environment.
If you can''t win, make sure the one that beats you breaks the record!
"Java still represents a project risk that many companies aren’t willing to invest in." Well my answer to this is that there are many companies that ARE willing to invest in. As a matter of fact, there are more networking applications being written in Java than there are in C. One reason is because it is so easy to use in a networking environment.
If you can''t win, make sure the one that beats you breaks the record!
If you can''t win, make sure the one that beats you breaks the record!
After viewing the lucid dreams demo i was impressed. However, the entire demo was launched in a 300 x 200 size window. In order for java to be the commercial gaming environment that we all want it to be -- it would have to be able to perform at the Lucid Dreams level in a full size window. Also, this quality of an example is a rarity. If only a brave few can do it, there will never be the mass support necessary for the language..
Just my two cents.... I would be glad to be wrong...
Just my two cents.... I would be glad to be wrong...
The lack of multiple inheritance is not a language limitation. Almost all modern languages and underlying object systems do not allow multiple inheritance. Most OO analyst caution against using it as it has been shown to be a flawed concept.
There are methods to effectively distribute Java applications using products such as InstallShield and InstallAnywhere for Java. Other solutions from Sun that are part of the JDK are in the works as well. The distribution problems highlight the fact that Java is still young. It began as a technology for embedded devices, then moved to applet use and recently has become the best choice for server-side development. Its move to a desktop platform has only recently begun. There are definitely going to be some bumps along the way.
While type-safe enumerated values are possible in Java, I agree with you that the lack of built in support for them is a problem. I am hoping that they will be added in a future version (important features are not always present in the early stages of a languages development - C++ did not even support templates in earlier versions of the standard). Of course that is a very small problem when compared to the large number of Java’s positives.
Your first statement about optimized code development is fundamentally incorrect. It is possible to have the same code optimized for platform specific execution by a run-time complier. In fact, back end optimization systems have advantages over developers optimizing code because run-time optimization systems can take into account local variables such as memory availability on particular systems.
Further, if you can have 95% optimized code or 100% optimized code that cost FIVE times as much which option do you think most business are going to choose?
When it comes down to it, languages don’t become the dominant standard because they are fast. They become the standard because they increase developer productivity. With almost every language generation we have LOST performance. We lost performance when we went to C++ from Assembly. VB is MUCH slower than C++, and yet there are now 3 million VB developers building every thing from mission-critical business management software to games. Java has been documented to provide in some cases a five-fold increase in developer productivity over C++. As technology advances the performance issues will disappear and there will be no reason left to use C++ for the bulk of all development (this might come as a surprise but device drivers represent a small part of all development).
There are methods to effectively distribute Java applications using products such as InstallShield and InstallAnywhere for Java. Other solutions from Sun that are part of the JDK are in the works as well. The distribution problems highlight the fact that Java is still young. It began as a technology for embedded devices, then moved to applet use and recently has become the best choice for server-side development. Its move to a desktop platform has only recently begun. There are definitely going to be some bumps along the way.
While type-safe enumerated values are possible in Java, I agree with you that the lack of built in support for them is a problem. I am hoping that they will be added in a future version (important features are not always present in the early stages of a languages development - C++ did not even support templates in earlier versions of the standard). Of course that is a very small problem when compared to the large number of Java’s positives.
Your first statement about optimized code development is fundamentally incorrect. It is possible to have the same code optimized for platform specific execution by a run-time complier. In fact, back end optimization systems have advantages over developers optimizing code because run-time optimization systems can take into account local variables such as memory availability on particular systems.
Further, if you can have 95% optimized code or 100% optimized code that cost FIVE times as much which option do you think most business are going to choose?
When it comes down to it, languages don’t become the dominant standard because they are fast. They become the standard because they increase developer productivity. With almost every language generation we have LOST performance. We lost performance when we went to C++ from Assembly. VB is MUCH slower than C++, and yet there are now 3 million VB developers building every thing from mission-critical business management software to games. Java has been documented to provide in some cases a five-fold increase in developer productivity over C++. As technology advances the performance issues will disappear and there will be no reason left to use C++ for the bulk of all development (this might come as a surprise but device drivers represent a small part of all development).
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement