minecrafter199 at March 2nd, 2012 23:11 — #1
Hi, (I'm new to the forum so don't tell me don't make a topic or something)
I was wondering which language gives the best opportunities for a successful game developer, Java or Objective-C. Can someone please help?
fireside at March 3rd, 2012 00:17 — #2
geon at March 3rd, 2012 00:51 — #3
Hi, (I'm new to the forum so don't tell me don't make a topic or something)
Don't worry, you are wellcome!
which language gives the best opportunities for a successful game developer, Java or Objective-C.
If you must choose between only thoose two, I'd pick Objective C. The only reason beeing the iOS platform being built for it, and the commercial success of the App Store.
Since you call yourself Minecrafter, I'm guessing Minecraft is the reason you ask about Java. It is certainly possible to write games in Java, but it is not a very popular language for that purpose.
stainless at March 3rd, 2012 13:27 — #4
Doing anything in java is like having one hand tied behind your back, you can do it, but it takes a lot longer.
If you start out with objective c you are limited to one platform, however you are learning a language that is universally available.
C is the corner stone of modern computing, once you know C you can easily learn C++, which means you can easily learn most object orientated languages, which means you can become a useful programmer.
If you start out with java, you have to learn a language and object orientated code at the same time, on a portable but slow and, at times stupid, language.
I hate java, with a passion, partly because Sun took a good idea and butchered it, partly because I had to work on a java virtual machine and I know how it operates. It should be dead by now, I wish it was. I will be drunk for days when Sun finally give up the ghost and bury this steaming pile of sh1t.
maybe I should shut up now...
fireside at March 3rd, 2012 20:14 — #5
'If you start out with objective c you are limited to one platform."
That's not true. You can use an open source compiler called gnustep for the pc. I read somewhere that Quake was written in objective c. You can use c++ or c libraries with it.
I also disagree that java is more work. The java library can actually save a lot of time and you don't have to worry about memory allocation. Just as objective c is good for Apple, java is good for Android, along with many other purposes.
geon at March 4th, 2012 03:27 — #6
I read somewhere that Quake was written in objective c.
Quake (up to Q3, i believe) was written in pure C. Some of the tools may have used Objective C, though. ID Software used Next cube workstations for development, so Objective C would have been a natural choice.
thenut at March 4th, 2012 08:55 — #7
I hate java, with a passion, partly because Sun took a good idea and butchered it
- And now Oracle Personally I'm not fond of Java. I think conceptually it's a great idea, but it seems poorly executed. I think C# is what Java could/should have been. I know people who swear by it though, but it's just not my cup of tea.
I'm a little biased against Objective-C mainly because the NS API is just horrible. Such long and difficult to memorize method names makes you rely heavily on an intellisense based IDE to help you out. While xCode isn't bad with that, it does miss a few. The Apple dev documentation is sub-par when you compare it to the succinctness and subject relavence MSDN provides (for C/C++/C#), so learning Obj-C will be more of a chore for you. Memory management in Objective-C is also a burden to work with sometimes. They try to help you by auto-pooling memory and garbage collecting, but sometimes I find it gets in the way. It was a bad design decision from NS to allow developers to chose their memory management. You never know when it's your responsibility to delete an object or if it's taken care of somewhere else. Pray someone wrote it down somewhere.
If the base of your question is "Should I develop for iOS or Android", you also have a 3rd choice, C/C++. My engine is C++ and runs fine on an iOS device. The only Objective-C code I need is to create a window and load resource files. The two languages also work very well together. The only time you need to go full Obj-C is when you work with Cocoa, which you can ignore if you plan to use OpenGL ES. Android also supports C/C++ via thier NDK, although I haven't tried it out yet. Their paltform is very fragmented and I think if you go this route, you should start first by using their newest SDK to avoid all the rift-raft in-between.
fireside at March 4th, 2012 10:04 — #8
I think C# is what Java could/should have been. I know people who swear by it though, but it's just not my cup of tea.
I've never understood that argument. They both work fine. I think there are seven different keywords or something like that and they both work approximately the same. I've really only used c# as a scripting language, whereas with java, I've extended classes on engines written in Java, but there is a price for not using a c++ base library. They are a little bit faster. The real problem with both of them is there is a ruling company underneath the whole thing. You don't get that unbiased development. Oracle is pushing java even more toward a specialized server language, and I don't think Microsoft even knows what it wants. It keeps changing it's mind all the time.
I think Microsoft had a pretty good idea with .Net and letting people choose different languages, although that's got to be a lot of work to maintain. It doesn't actually take that long to learn a language, but you are only going to be able to specialize on one or two, so the more applications you can use them for without learning a new language, the better. C++ is getting to be low level and not the best choice for people who just want to get something out. I think Unity is a lot better option. Engines are kind of going that way where they port to multiple platforms.
stainless at March 5th, 2012 04:56 — #9
Java :- Great idea, killed by bad management.
The whole idea of java was the platform independence. Then they started changing the VM so much that you had to do versions for a specific JDK, which made it platform dependant again. Just plain stupid.
C# / .Net :- Lovely to work with, but under threat.
I have had emails from people inside MS saying that .Net may be dropped, I think someone even did a press release saying that. Though I think it was recanted. Not sure what is going on anymore.
Unity seems to be the front runner at the moment, though I haven't looked at it for a while. We dropped it after talking to the developers about putting it on AGP. They were not very easy to talk to.
There seems to be two techniques in use at the moment. Compile time and run time independence.
Compile time you hit a button and get a version for a platform, hit another and get a version for a different platform.
Run time you have a single version that is translated to the target platform when loaded into memory.
Unity is compile time isn't it?
Antix game player is run time.
Any others? Might be worthwhile making a list.
thenut at March 5th, 2012 10:02 — #10
I've never understood that argument. They both work fine.
Indeed they do, but it's not about the classic arguments in the days of old. For me a platform has to deliver three things. Functionality, usability, performance. Java meets the first requirement, but it lacks in the other two. From a usability standpoint, it's difficult to explain to someone how to get Java up and running and what you may need to do in order to run a JAR file. The JRE can also fail to function properly between 32 and 64 bit editions (Homer Simpson: Why god hath you forsaken me!). They really didn't give this process any thought. Performance wise, I won't cite benchmarks. I'm sure someone out there will say all is fine and well. However, JBoss, Tomcat, Weblogic, and Eclipse are just pigs rolling in resource rich fantasy land. I've worked with server devs that used these technologies and I'd poke fun at them saying 64 bit systems were invented just to cater to Java developers. They would counter this by pointing me to a bezarre parody on .NET. Can't remember the video source, but it was funny.
Anyway, .NET solved these problems while maintaining a consistent API and provides excellent tools and UI libraries.
fireside at March 5th, 2012 10:32 — #11
Unity is compile time isn't it?
I'm not sure because it's using mono-develop. I"m sure most code is compiled, but I think it requires some scripts to run. A lot of people complain about the authors because they have their own ideas, I guess. I kind of wish an open source engine would have gotten popular instead of Unity, but se la vi. They have all these paid for add-ons, the pro version is expensive, but it basically works pretty good. The editors are nice. They're latest thing is not including navmesh path finding with the free version. It's always like that when you deal with a company. It's just a come on to get more money and they give you just enough to keep you. We had this with Flash and now it's Unity in 3d. There's nothing magic about it and eventually there will be open source equivalents that port to the major platforms.
geon at March 5th, 2012 13:58 — #12
"Unity is compile time isn't it?" I'm not sure because it's using mono-develop. I"m sure most code is compiled, but I think it requires some scripts to run.
They speciffically developed a version of mono that would compile rather than jit. This was to comply with the app store terms before the script clause was relaxed. I don't know if the special verson is still in use.
bigxav at March 5th, 2012 17:02 — #13
Being an app Developer... I would recommend to steer clear from objective-c, The syntax is very foreign and difficult to figure out if you are a beginner I would recommend C++... or if you are set on making iPhone apps start at C learn the ropes then continue to Objective-c
mikeyt at June 11th, 2012 15:39 — #14
I'm no expert so I wouldn't want to say what is best but if anyone wants to learn Java or C++ I found a great series of lectures by Stanford on iTunes U. It's free I am on lecture 7 and slowly getting better. I think if you search programming methodology it should come up.
I am trying to learn Java with the ambition of going onto C++ as most audio games jobs seem to ask for C++, don't know how it is for the rest of the developer world.
All the best
alphadog at June 11th, 2012 16:03 — #15
Arguing about languages is splitting hairs. No dev worth the \\$5 of elemental atoms they are made of knows only one language. A good, intermediate developer should have worked in at least two languages...
allen_brayan at June 22nd, 2012 02:13 — #16
If you're willing to enter in the field of Android applications/games development then go for Java and if you want to develop games for iPhone then you need to learn Objective C.