Java or Objective-Chttp://forum.devmaster.net/t/java-or-objective-c/21099
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?
Fri, 22 Jun 2012 06:13:40 +0000languagesJava or Objective-Cno-reply@example.com (@Allen_Brayan Allen Brayan)@Allen_Brayan wrote:

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.

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...

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.

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

"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.

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.

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.

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.

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.

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.

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.

'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.

However, with an engine like Unity, you can build games for both iPhone and Android, along with pc games, all with one language like javascript or c#. There is more expense for the plugins, however.

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.

Objective C mainly gets used for Apple products, not much for pc. Java doesn't get used a lot for games either. Is it your first language? Java isn't too bad of a first language, but python is a little easier to pick up. Once you've learned one language, it will be easier learning more. C++ is the low level choice for game programmers, but many developers use a higher level language. Do you mean indy game developer, or working for a company? Javascript might also be a good choice. You can use it for web development, and some engines, like Untiy, use it also. There are really so many options now days that it's kind of hard to say what's the "best." If you do get into game development, you can pretty much bet you'll be using more than one, unless you specialize in c++.

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?