I'm a lay 'game' developer...

and my primary language is C++(though I do dabble in javascript). I've noticed that Java is becoming increasingly popular, both for web-development, and applications. I've even heard (and read) that Java is going to become more popular than C++ because it is not 'platform' dependent. This will affact applications but- will this have as much effect on game development? I've heard that Java is a bit inadequet for game development, but this would change, obviously.

*Curious lay programmer*

Thanks in advance...
«13

Comments

  • : I've heard that Java is a bit inadequet for game development,
    : but [b]this would change, obviously.[/b]

    Not necessarily. If you've never worked on a commercial game, you might be shocked at how different they are from the typical desktop app. They are like operating systems unto themselves.

    Java makes programming easier by abstracting the machine away from your control, doing stuff 'for you' behind your back (garbage collection), and by simplifying the language (making it less expressive). If your purpose is to quickly develop robust, "cross-platform" code (Sun has screwed up portability with their gross mishandling of the language, but that's a whole other story), Java may be the ticket. I've used it for big projects at work. If your purpose is to write a large, complex, real-time system that milks every cycle out of the hardware, it's not so hot.

    To me, the biggest problem with Java is that it is not a language per se, it is a commercial [italic]product[/italic], which Sun refuses to standardize.
  • : and my primary language is C++(though I do dabble in javascript). I've noticed that Java is becoming increasingly popular, both for web-development, and applications. I've even heard (and read) that Java is going to become more popular than C++ because it is not 'platform' dependent. This will affact applications but- will this have as much effect on game development? I've heard that Java is a bit inadequet for game development, but this would change, obviously.
    :
    : *Curious lay programmer*
    :
    : Thanks in advance...
    :

    The Java people like to say that Java can be used anywhere. They especially like to say that it is as well suited for embedded systems as C/C++. I don't know what they mean with embedded... portable PC:s?

    The truth is that its only suited for desktop/web applications, where it might even be better than C++.

    It is specified that Java should use "byte-code", should run on a virtual machine and should have garbage collection etc. With such specifications, it can never be as efficient as C++.
    C++ is the only serious language for real-time applications, which most of the larger games are.

    Though I think Java will survive longer than C#. It is almost the same language, but Java is used widely, and C# isn't.
  • :
    : The Java people like to say that Java can be used anywhere. They especially like to say that it is as well suited for embedded systems as C/C++. I don't know what they mean with embedded... portable PC:s?

    I program embedded systems. In my case an embedded system refers to the computer system that automates the machinery that we manufacture. The computer in your car (if you have a modern car) is an embedded system.
    In other words, an embedded system is a computer that is incorporated into another machine (or computer) for the purpose of performing a particular task, and unlike other computer systems it performs that task from the time it is turned on until the time it is turned off.

    The only difference really from the programmers point of view is rather than calling functions to read keyboard input and draw screen output, we call functions to read and write discrete and analog i/o, as well as screen/keyboard i/o.
  • : : I've heard that Java is a bit inadequet for game development,
    : : but [b]this would change, obviously.[/b]
    :
    : Not necessarily. If you've never worked on a commercial game, you might be shocked at how different they are from the typical desktop app. They are like operating systems unto themselves.
    :
    : Java makes programming easier by abstracting the machine away from your control, doing stuff 'for you' behind your back (garbage collection), and by simplifying the language (making it less expressive). If your purpose is to quickly develop robust, "cross-platform" code (Sun has screwed up portability with their gross mishandling of the language, but that's a whole other story), Java may be the ticket. I've used it for big projects at work. If your purpose is to write a large, complex, real-time system that milks every cycle out of the hardware, it's not so hot.
    :
    : To me, the biggest problem with Java is that it is not a language per se, it is a commercial [italic]product[/italic], which Sun refuses to standardize.
    :

    Well, the 'standardization' issue, is one of the reasons why I don't want to learn Java- C++ is standardized and not a product of any company. With Microsoft taking an interest in Java, that might change though.

    I'm kind of in a position at the moment where information on this stuff isn't readily avalible. All I have are my books and what little info I can gather from the web.



  • : :
    : : The Java people like to say that Java can be used anywhere. They especially like to say that it is as well suited for embedded systems as C/C++. I don't know what they mean with embedded... portable PC:s?
    :
    : I program embedded systems. In my case an embedded system refers to the computer system that automates the machinery that we manufacture. The computer in your car (if you have a modern car) is an embedded system.
    : In other words, an embedded system is a computer that is incorporated into another machine (or computer) for the purpose of performing a particular task, and unlike other computer systems it performs that task from the time it is turned on until the time it is turned off.
    :
    : The only difference really from the programmers point of view is rather than calling functions to read keyboard input and draw screen output, we call functions to read and write discrete and analog i/o, as well as screen/keyboard i/o.
    :

    So, they use Java in the 'embedded' car systems? I always understood it that they used Assembler called via C for those kinds of systems.
    Huh, that's interesting...
  • : Well, the 'standardization' issue, is one of the reasons why I don't
    : want to learn Java- C++ is standardized and not a product of any
    : company. With Microsoft taking an interest in Java, that might
    : change though.

    Yup, I used to use Java, but Sun's handling of it left a bad taste in my mouth.

    Microsoft had wanted something like Java for a while. C++ was proving increasingly problematic for desktop development and Java seemed like a great solution. So Microsoft got behind Java 100%. Great news for Java developers, because Microsoft makes some of the best development tools on the market.

    Microsoft hired the legendary language designer Anders Hejlsberg (of Turbo Pascal and Delphi fame) to do the job. He created the best Java development tool on the market (J++). Full-blown luxurious DevStudio environment with Intellisense, wizards galore, the fastest Java compiler the world (faster than Sun's compiler by a good margin). Microsoft also released the fastest Java VM in the world. Much celebration in Java land. Sun's response? They sued Microsoft.

    Sun objected to a Hejlsberg extension of the language: delegates. Delegates are like a bound member function pointer in C++. They drastically reduced the amount of bullshit code a Java programmer had to write for things like event handling, while also making Java more efficient. Wonderful addition to the language. Hejlsberg engaged in public scholarly debates with Sun's engineers about the merits of delegates, but in the end it was Sun's lawyers who decided it. Sun sued Microsoft, won, and Microsoft dropped Java like a bad habit. Bad news for Java programmers.

    Hejlsberg went on to create C#, which is a more expressive, efficient language than Java, while retaining Java's strengths (simpler, no memory management, machine independent, sandboxable, etc.) Microsoft immediately submitted C# for standardization and now C# and it's VM are international standards (ECMA-334 and ECMA-335), just like C++. Free for use by anyone. Sun, despite years of desperate pleading from Java programmers, [italic]still[/italic] refuses to standardize Java.

    So who's the bad guy here? Naturally 'Micro$oft'. Everybody knows [italic]they're[/italic] evil, right? ;)

  • : So, they use Java in the 'embedded' car systems?

    He was just giving an example of what an embedded system is, not necessarily a system using Java.
  • [b][red]This message was edited by Lundin at 2004-12-7 0:50:34[/red][/b][hr]
    : :
    : : The Java people like to say that Java can be used anywhere. They especially like to say that it is as well suited for embedded systems as C/C++. I don't know what they mean with embedded... portable PC:s?
    :
    : I program embedded systems. In my case an embedded system refers to the computer system that automates the machinery that we manufacture. The computer in your car (if you have a modern car) is an embedded system.
    : In other words, an embedded system is a computer that is incorporated into another machine (or computer) for the purpose of performing a particular task, and unlike other computer systems it performs that task from the time it is turned on until the time it is turned off.
    :
    : The only difference really from the programmers point of view is rather than calling functions to read keyboard input and draw screen output, we call functions to read and write discrete and analog i/o, as well as screen/keyboard i/o.
    :

    I was trying to be sarcastic, saying that Java might work in a portable PC, but not anything "more" embedded...
    I also work with embedded systems, so I know quite well what it means. :-)



  • : : Well, the 'standardization' issue, is one of the reasons why I don't
    : : want to learn Java- C++ is standardized and not a product of any
    : : company. With Microsoft taking an interest in Java, that might
    : : change though.
    :
    : Yup, I used to use Java, but Sun's handling of it left a bad taste in my mouth.
    :
    : Microsoft had wanted something like Java for a while. C++ was proving increasingly problematic for desktop development and Java seemed like a great solution. So Microsoft got behind Java 100%. Great news for Java developers, because Microsoft makes some of the best development tools on the market.
    :
    : Microsoft hired the legendary language designer Anders Hejlsberg (of Turbo Pascal and Delphi fame) to do the job. He created the best Java development tool on the market (J++). Full-blown luxurious DevStudio environment with Intellisense, wizards galore, the fastest Java compiler the world (faster than Sun's compiler by a good margin). Microsoft also released the fastest Java VM in the world. Much celebration in Java land. Sun's response? They sued Microsoft.
    :
    : Sun objected to a Hejlsberg extension of the language: delegates. Delegates are like a bound member function pointer in C++. They drastically reduced the amount of bullshit code a Java programmer had to write for things like event handling, while also making Java more efficient. Wonderful addition to the language. Hejlsberg engaged in public scholarly debates with Sun's engineers about the merits of delegates, but in the end it was Sun's lawyers who decided it. Sun sued Microsoft, won, and Microsoft dropped Java like a bad habit. Bad news for Java programmers.
    :
    : Hejlsberg went on to create C#, which is a more expressive, efficient language than Java, while retaining Java's strengths (simpler, no memory management, machine independent, sandboxable, etc.) Microsoft immediately submitted C# for standardization and now C# and it's VM are international standards (ECMA-334 and ECMA-335), just like C++. Free for use by anyone. Sun, despite years of desperate pleading from Java programmers, [italic]still[/italic] refuses to standardize Java.
    :
    : So who's the bad guy here? Naturally 'Micro$oft'. Everybody knows [italic]they're[/italic] evil, right? ;)
    :
    :


    On the other hand, one might say that Microsoft feeled threatened of Java's platform-independance, and made their own Java that only would work in Windows. And so they where sued and made C# instead, which almost nobody uses, at least not yet.
    Evidently where the nice changes that Microsoft made not overwhelming enough to make the Java people switch language, so one might question if Microsoft really had to make those changes...


  • : On the other hand, one might say that Microsoft feeled
    : threatened of Java's platform-independance, and made their
    : own Java that only would work in Windows.

    They didn't make a Java that only works in Windows. They made a Java that [italic]could[/italic] be used to write native Windows app, if the programmer chose to do so. There are dozens of similar Java implementations out there -- any Java that's used for embedded applications, like cell phones, is necessarily capable of using platform dependent libraries.

    As for 'platform-independence'. Hardly. It [italic]is[/italic] a platform. A rapidly changing platform. If you want to write an app for that platform, and be able to run it in a particular host environment (i.e. Windows, Mac, Linux) you need to code for a specific version of Java, make sure that the VM for that version is available for your target host(s), make sure the features you use actually [italic]work[/italic] in those implimentations of the VM (despite Sun changing the language every six months and refusing to standardize any of it), distribute the VM with your application, don't use any native code in your app, etc. This is assuming you're willing to have a non-native user interface and sluggish performance. There are good reasons nobody does this. It's hardly a threat to Microsoft.

    : And so they where sued and made C# instead, which almost
    : nobody uses, at least not yet.

    I have 3 or 4 apps on my machine that use C# (like Vegas Video 5 -- kick ass app!). I have 0 apps that are written in Java. Considering the relative ages of the platforms, that suggest to me that C# is doing pretty well. Unfortunately it has the same problem VB and Java have, in that you need to distribute the platform runtime libraries to ensure your app will run on a user's system.

    : Evidently where the nice changes that Microsoft made not
    : overwhelming enough to make the Java people switch language,
    : so one might question if Microsoft really had to make those
    : changes...

    Why would Java people switch languages? That was never the point. Java programmers work in different domains than desktop developers. Microsoft embraced Java to allow the [italic]desktop developers[/italic] -- those who were increasingly finding C++ unwieldy (expensive, time consuming, error prone, etc.) for developing business apps, yet found VB unpalatable -- to have an alternative language to use. In other words, it's not Java programmers who would switch, it's C++ and/or VB programmers.
  • : : So, they use Java in the 'embedded' car systems?
    :
    : He was just giving an example of what an embedded system is, not necessarily a system using Java.
    :

    Why do you know so much about Microsoft and their developer tools?

    Did you help with developing any of them?

    Do you own some Microsoft stalks?

    Do you know anything about the XBox II that should be released within a year?
  • In reality, Microsoft realized that Java was a reliable "language" and that if it could be allowed to continue in development it could pose a threat to Microsoft's dominance in Windows development tools because Java can't be controlled directly by Microsoft. So what was their solution, the exact thing that they have always done, they stole the Java idea/technology, made it work best, and almost only on Windows, then stole the good name of C/C++ to make C#. But don't worry, problems like this won't exist once Longhorn comes out, Microsoft is stopping support for OpenGL above 1.5, and I've heard rumors about little to no Java support. There's a good chance that that would be the end of all good technology that works, except for Linux, which may become a haven for all OpenGL and Java developers after a few years.
  • [italic]"In reality, Microsoft realized that Java was a reliable 'language' and that if it could be allowed to continue in development it could pose a threat to Microsoft's dominance in Windows development tools because Java can't be controlled directly by Microsoft. So what was their solution, the exact thing that they have always done, they stole the Java idea/technology, made it work best, and almost only on Windows, then stole the good name of C/C++ to make C#.
    But don't worry, problems like this won't exist once Longhorn comes out, Microsoft is stopping support for OpenGL above 1.5, and I've heard rumors about little to no Java support. There's a good chance that that would be the end of all good technology that works, except for Linux, which may become a haven for all OpenGL and Java developers after a few years."[/italic]

    Wow. A certified, foil-hat wearing member of the [italic]Bill Gates is the Devil[/italic] cult.

    You claim that Java "could pose a threat to Microsoft's dominance in Windows development tools because Java can't be controlled directly by Microsoft". First, any "dominance" Microsoft has in tools is given to them by the market. The market chooses their tools because they kick ass, not because the language is 'controlled directly by Microsoft'. Does Microsoft control C? C++? No. Does that prevent Microsoft from making tools for those languages that programmers like to use? No. Your argument, if it even deserves to be called that, is absolutely ridiculous.

    If Microsoft saw Java as a threat, why did they support it so spectacularly? Microsoft wrote the fastest most flexible Java VM, the fastest compiler, the nicest development environment, and they supported it in their browser. Java ran better under Windows than it did under Solaris (Sun's own operating system). The only reason Microsoft backed away from supporting the language was Sun's lawsuit (that lawsuit is just the tip of the iceberg in Sun's mishandling of Java).

    You claim that Microsoft "stole the good name of C/C++ to make C#". LOL! Would you care to explain why it's a crime to give a C-like language a C-like name? There are several C-derived languages with names like "C++", "Objective-C", "C--" and others. These names pay homage to the influence of C in their design. But when Microsoft does it it's [italic]stealing[/italic]?

    BTW: There is no language with the name "C/C++", but there are languages named "C" and "C++".

    You claim that Microsoft "stole the Java idea/technology". If you think one language influencing the design of another is [italic]stealing[/italic] then all languages are guilty, including Java. Java was influenced by C++, Smalltalk, Eiffel, Oberon, Objective-C, and others. In fact Java was influenced by Delphi, and the designer of Delphi also designed C#. C# was influenced by Java, C++, Modula2, Delphi and others. The runtime environment has similarities to Java (garbage collecting virtual machine) but so does Perl, TCL, Ruby, Python, LISP and a dozen other modern languages. Did Java steal from them? Of course. That's the way computer languages evolve.

    You claim that Microsoft made C# work "only on Windows", when in fact Microsoft did something Sun never would: they standardized the language. Sun jealously controls licensing of Java Technology. Developers are constantly being screwed by Sun changing the language, and they have begged Sun to standardize the language -- but Sun is unwilling give up control of their product. Microsoft submitted C# for standardization before it was even released. It's now an international standard, just like C++. Anyone can make their own C# products and Microsoft gets nothing.

    As far as Microsoft dropping support for OpenGL and Java being "the end of all technology that works", that's just laughable. [italic]Java[/italic] is the only technology that works in Windows?! Care to name one popular commercial Windows application that is written in Java? Wanna try for two?
  • You must admit that C# and Java are very much alike, while C and C# are totally different. Mainly because of the OO part in C#. I think the name C# is misleading, if there is any language they "stole" from when they made it, it was Java.

  • : and my primary language is C++(though I do dabble in javascript). I've noticed that Java is becoming increasingly popular, both for web-development, and applications.

    [italic]
    There are certain things that come and go within a few years or even only months. There are other things that stay around. C has been around since the early 70's. C++ has been around since the early 80's.

    c and c++ are basically free languages. You can get compilers for them that are not only free, but also open source(ie. gcc, GCC...). c and c++ compilers are available on many platforms including gaming consoles.

    Many proprietary languages and technologies have been deriving from these highly popullar and highly regarded languages because it makes them easier to learn for programmers already using them. These derivative languages are more likely to change rapidly and fade away quickly because they are created to make money. For businesses to profit: more new versions need to be purchased; more bugs need to be fixed; a new product needs to be made every few years.

    [/italic]

    :
    : *Curious lay programmer*
    :
    : Thanks in advance...
    :

    I've even heard (and read) that Java is going to become more popular than C++ because it is not 'platform' dependent.
    [italic]
    I highly doubt any language will ever be more popullar than c++ or c.

    c++ is actually, in a way, platform independant. If code is written without using inline assembly blocks and only uses standard library functions(no platform dependent API calls), it can be recompiled for any platform that has a c or c++ compiler. The compiled executable files don't run on all platforms but the source code just has to go through compilation to execute on basically any platform.

    The main problem with Java and .net is that they basically create an artificial platoform of their own. By having all the executables(byte code) run through a virtual machine, they run dramatically slower than executables compiled for any specific platform. This is obviously a huge problem if you are making games. Another thing for Java to be more platform independent, they restrict themselves from using platform dependent features that can add a great deal to software(especially games). If one game produces slower/poorer graphics/sound... than another using the same computer, no one buys it.

    For illustration,
    Imagine a Java version of Unreal 2004. You want to use the top resolution and details right? Have you seen 3D graphics done with Java? lol They are not that great.

    The fastest code is the code written with the most valid assumptions.

    If you know your game will only be run with a specific platform and with specific video card, sound card... you can write the fastest game possible. You could write code to directly interact with the video card. You could even write machine code for the GPU on the card to do loads of special effects for your game.

    If you don't assume there is a specific video card, you limit yourself from all the special abilities of specific cards. A new layer may need to be introduced as with DirectX or OpenGL. This new layer, while simplifying and making software work more independently of hardware, it also slows things down because every call to a graphical function is first communicated through this new layer.

    The inefficiencies of DirectX and OpenGL are not that bad. Most games use them because there are too many different types of hardware on the market to make the games for all of them.

    Moving to bytecode, however, is a huge change. It's not 5% slower but 200%/300% slower and with crippling restrictions when it comes to 3D graphics.

    [/italic]


    This will affact applications but- will this have as much effect on game development? I've heard that Java is a bit inadequet for game development, but this would change, obviously.
    [italic]
    Most main-stream 3D games will not be made with Java unless most people are willing to pay for slower games with poorer graphics and sound.

    [/italic]
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories