Java or learn c++

Started by
27 comments, last by minibutmany 11 years ago

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

Edit: wrote something stupid, deleted something stupid

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage.

I don't mean that as an insult in the slightest. It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

Unless of course you think rolling your own basic libraries == control over your code. You can do that in any language, it's just in C++, you often have to do it. This of course, ins't a positive.

Yes, things like DirectX make C++ stand out of the crowd.

DirectX is just a library. You can generate bindings in a variety of languages, in many of them with very little overhead. A prominent poster on this sight for example created SlimDX, a DX wrapper for .NET languages.

Advertisement

Java is easier to handle, has a pretty big library, its very well documented (yay for javadoc!) and in my limited experience, I see its lack of complex features as a positive trait. Though learning a good ol' compiled language with manual memory management can make easier to understand many general quirks about programming (it might teach you a thing or two about why some things are like they are in a managed language) and shape up your coding habits (avoiding creating 8823824 objects in a 3 line method for example, Java makes it very easy to get these performance/memory hogs up and running like they're the best code ever if you don't know what is going on).

I think the longer you linger with a managed language before learning a non-managed one, the steeper the learning curve will be when you do so. You're going to deal with memory management, like it or not, managed language or non-managed language.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

I have been learning java for the past 4 or 5 months. I started dabbling in making games about a month ago in java following some tutorials on YouTube and have found that I enjoy it quite a bit. I have been reading some of what people say around the internet and they say that c++ is much better for making games than java. I was wondering if I should switch to c++ and start learning it instead of continuing java. I haven't been able to decide and I hoped that you guys here would have more incite on this than anyone else on the internet. Thanks

IMO, Java is just as good for making games as C++. So if you want to make games and you find it enjoyable, use Java.

Beginner in Game Development?  Read here. And read here.

 

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

Edit: wrote something stupid, deleted something stupid

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage.

I don't mean that as an insult in the slightest. It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

Unless of course you think rolling your own basic libraries == control over your code. You can do that in any language, it's just in C++, you often have to do it. This of course, ins't a positive.

Yes, things like DirectX make C++ stand out of the crowd.

DirectX is just a library. You can generate bindings in a variety of languages, in many of them with very little overhead. A prominent poster on this sight for example created SlimDX, a DX wrapper for .NET languages.

I'm fully aware that there is a number of wrappers for DirectX for different languages. But still they will perform slightly less efficient than original one. This is another one reason as to why we don't see any AAA-titles on Java. The only advantage Java gives you is unmanaged memory (just like thousands of other languages out there). In C++ you can work both with OpenGL and DirectX natively, dont need any JVM environment, and one can learn everything he needs about different programming paradigms and how computer actually works. Heck, you can ever write low-level code with it. You are right that beginner dont need all of it, but he can choose the simple OOP approach and forget about others for now. But if he needs them - they are here, unlike in Java.

"This is another one reason as to why we don't see any AAA-titles on Java"

Minecraft is written in Java, Minecraft is not a "AAA" title. But I suspect that doesn't bother the now-multimillionaire author.

Java is plenty fast enough to write all sorts of games. Someone who's been playing with languages for a couple of months isn't writing a AAA title anyway. They're writing Tetris. And Java is a good choice to learn to write Tetris in.

I miss the days of Basic. When you could just turn the machine on and Basic was waiting for you. Didn't have all this crap about what languages and frameworks to use, everyone just used the Basic on their machine and moved onto using bits of machine-code when they were ready. And so people learned how to write game-loops and how to manage state and how to do collision detection and how to make a game actually fun without having a long debate on the internet about what tool to use because there was only one to hand.

I'd say learn to make a game in Java first so you get the hang of programming, and then consider switching. C++ is not a beginner friendly language to learn. It's like someone tried to make an octopus by nailing 4 legs onto a greyhound ;)

Or...

cat.png

http://yosefk.com/c++fqa/

"This is another one reason as to why we don't see any AAA-titles on Java"

Minecraft is written in Java, Minecraft is not a "AAA" title. But I suspect that doesn't bother the now-multimillionaire author.

Java is plenty fast enough to write all sorts of games. Someone who's been playing with languages for a couple of months isn't writing a AAA title anyway. They're writing Tetris. And Java is a good choice to learn to write Tetris in.

I miss the days of Basic. When you could just turn the machine on and Basic was waiting for you. Didn't have all this crap about what languages and frameworks to use, everyone just used the Basic on their machine and moved onto using bits of machine-code when they were ready. And so people learned how to write game-loops and how to manage state and how to do collision detection and how to make a game actually fun without having a long debate on the internet about what tool to use because there was only one to hand.

I'm aware of Minecraft existance, hence I wrote AAA-titles. The rest is just irrelevant - beginner can write tetris with C++ just as fine. I'm really curious why Java-lovers like to bash C++, which is extensively used languages by many people, especially in game development. Is it because there is no AAA written with Java?

Its because Java is like on that picture above, but with an arbitrary number of the legs the Java makers didnt like cut off and a wheelchair added, they know the similarity but have to pretend there was none to set themselves apart from it.tongue.png

Yes, things like DirectX make C++ stand out of the crowd.

The same argument could be held to Java for Android and LWJGL....but from the standpoint of a beginner, none of these features would even matter, and Java would actually prove better because of its included graphics library(which isn't any good for performance but at least it's easy to use).

Stay gold, Pony Boy.

This topic is closed to new replies.

Advertisement