[java] Java overtaking C in game development?

Started by
37 comments, last by The_Neverending_Loop 12 years, 9 months ago
Hi,

I am a self thought web developer that wants to learn a language to make applications or even games with. I am still wondering what language to choose but i guess it's java vs C. Now i have been doing some research and it seems C is still ruling the market. But i have read in some places that java is starting to get bigger and in a lot of cases makes life easier on bigger applications.

Now i am leaning towards java because of future prospects. But i have also been looking into university classes and certificates and it seems here in holland they offer way more java then C classes.

So is there anything i need to know choosing java over C?
Advertisement
I don't know if C is used in game development that often anymore.
Maybe you mean C++ or C#?

C is pretty low-level and most often used in device drivers, embedded systems and OS kernels.

I'd suggest java, C# or C++.
It's perfectly possible to write games in java.
Java has never been very popular for client side applications and the current-gen consoles don't even support it. Also, the future dont look very good for Java since it's now owned by Oracle...
If you count android (and other) phones as (gaming) consoles then, yes, consoles support it.

For getting into games programming consider C# with XNA. It even allows you to get your games on XBOX Live Arcade.
AFAIK Android doesn't really use Java, it uses Dalvik. This is the reason Google was sued by Oracle.
Java is a modern, nice language. You'll get more done in it, and in less time.

C is an old language, it is totally unforgiving. It will take longer to learn. Its design motto is "The programmer knows what they are doing", which is rarely true in general and never true for beginners.

Expertly optimised C code will generally outperform code written in other languages. Naive and reasonably optimised implementations will usually run faster in Java, for most "typical" applications. Beware of benchmarks that say differently, they are often artificial in nature and do not represent true, full-application performance tests.

In the games industry, C and C++ are still the standard. Outside the games industry, you are more likely to run into Java or C#. C isn't really ruling the market, there are few new projects written in C relative to modern languages, most of the jobs are maintenance or niche.

At the end of the day a programmer rarely learns just one language (those who do are usually the weakest developers). You're not choosing which language not to learn, you are just picking one to learn first. Between Java and C I would recommend starting with Java until you have written a few games. Then you might want to do some research on the next language to learn.

I normally recommend Python or C# though, they are also nice languages with some rather nice game oriented libraries. Pretty much everything I said above about Java applies to C#.
@_swx_ Dalvik is Android's Java Virtual Machine. Android apps are written in java.
It depends on what definition of Java is used ;) It uses the java language, but does not have the same standard library AFAIK.
I doubt it, java the language, misses a number of key aspects which will make game development difficult.
You will lack low level controll, will not have access to proper closures and monadic structures. This will make component oriented entity systems rather bothersome.
Speed executionwise should not matter too much though. (apart from very low level optimizations).

On another note ... java is a too high a level language. Most of the developers are not aware of the nitty gritty hands on approaches to deal with many kinds of problems. The higher level, code and footprint heavy, tools will be used instead. But its my opinion that having even the slightest experience with a language that does not have all these conveniences will dramatically extend the toolkit a developer has.
Quote:Original post by rip-off
Java is a modern, nice language. You'll get more done in it, and in less time.

C is an old language, it is totally unforgiving. It will take longer to learn. Its design motto is "The programmer knows what they are doing", which is rarely true in general and never true for beginners.

Expertly optimised C code will generally outperform code written in other languages. Naive and reasonably optimised implementations will usually run faster in Java, for most "typical" applications. Beware of benchmarks that say differently, they are often artificial in nature and do not represent true, full-application performance tests.

In the games industry, C and C++ are still the standard. Outside the games industry, you are more likely to run into Java or C#. C isn't really ruling the market, there are few new projects written in C relative to modern languages, most of the jobs are maintenance or niche.

At the end of the day a programmer rarely learns just one language (those who do are usually the weakest developers). You're not choosing which language not to learn, you are just picking one to learn first. Between Java and C I would recommend starting with Java until you have written a few games. Then you might want to do some research on the next language to learn.

I normally recommend Python or C# though, they are also nice languages with some rather nice game oriented libraries. Pretty much everything I said above about Java applies to C#.


Agreed with most. C# is indeed a very nice language as it is basically a functional language (yes, functional programming language). In bases all the essential ingredients are present to fluently express proper code execution workflows. Having access to closures and monadic structures will dramatically reduce the amount of redundant code which would otherwise result from an imperative language attempting to deal with problems for which it is not suited.

Currently my main goal (for iphone development) is getting things done in C# over cpp or java. Extension methods, funcs and predicates really lower development time needed to set up workflow and querylike related tasks.
Building a component oriented entity system in java would be alot harder to do in java.
C# has proper generic, proper type reification, extension methods (which are sooo good for entity systems), methods are first class members which really clean up closure and delegation based code.

This topic is closed to new replies.

Advertisement