Programming in Java on Mac

Should XCode come with the iMac? When I inserted the second disk, all that appeared to be on it, applications-wise, was OS9/Classic. If not, where can I download it? Finally, (and apologies for hijacking a Java thread), does it support HTML, SQL and PHP natively or at least with plug-ins? Here I am mainly thinking of syntax-highlighting. PHP function-insight would be a bonus but not essential.
 
On the iMac , I think if you go to Applications -> Utilities I think there's a folder called "install developer tools", or something like that.

I think you can also get a free account on the apple developer site and download them for free from there.
 
anerki said:
A couple of questions, a simple one if you program in Java yourself:

I use XCode to write all my code and compile it, but I find it dreadfully slow. Takes ages to load and even takes ages just to type the code (every letter is delayed for some reason). I program on a 1Ghz G4 with a Gb of RAM so that should be enough, no? What application do you use to write in Java?

Also, is there an application like TogetherSoft for Mac OS X? TogetherSoft generates code for buttons, ActionListeners and the likes with a drag and drop and click interface. It also allows you to make UML schemes and put your classes/methods directly in it for easier writing.

Thanks in advance!
Frederik-Jan


XCode is great for what it is... a free text editor with some fancy addons that some developers might want. But it's not the end-all, be-all of coding environments.

The best dev IDEs come from Microsoft (yeah, you heard right) and Borland.

Having said that, I use NetBeans for all my java coding. It's available on the 3 major platforms (Win, Linux and Mac), is consistently built across all of them and works just fine. Borland's JBuilder is probably a little better, but the major price tag per seat is a bit intimidating for me to buy on my own.

$.02
 
A very plausible defense for overweight IDEs vs. text editor/makefile Java development can be found in the vast number of features that an IDE offers for a new and even advanced Java programmer. Rather than doing it the hard way, taking three times as long and then bragging about it, as some do (no, not all), I prefer to Get The Job Done. Examples of nice IDE features include:
--offering popup lists of methods and properties.
--offering to point out studip spelling errosr in methods, variables, etc. With my typing, this alone saves several hours per project
--offering to help constructing class definitions and method calls as well as adding methods stubs when implementing an Interface.
--pointing out stupid errors, which programmers of all stripes are prone to.

I use the word 'offering' above, because almost all of these features can be disabled if not desired. Automatic package management is nice, too. For me, a good IDE allows me to focus on improving my design and code, not managing it.

I hope this helps--

Paul
 
After spending some time with C once again, and realizing that the API is just so much easier than Java or C# or C++, I'm beginning to think that IDEs are there to mask deficiencies in the design of APIs and languages.

Look at how complex file I/O is in Java. What does that add over the standard C I/O model apart from inefficiency and complexity? You need an IDE when your API is complex. A simple API that takes few arguments means you'll be productive even in a simple text editor. The threading model of C (pthreads or even fork(), but that's processes) isn't significantly more difficult than Java's. I've been forced to use C recently and I'm remembering why I liked programming in the first place. It's back to basics, where the language is simpler, and the code is just more elegant.

NOTE: This isn't to say that C is perfect. It just has a much simpler API and I/O is one example where it completely and utterly trumps Java. There are pointers to deal with, but good programming practices (stuff you should learn before writing C code anyway) deals with most of the issues. If you can't handle pointers, you probably shouldn't be writing code anyway.
 
Have you taken a look at Sun Java Studio Creator? I think it'll be more to your liking than Xcode. I like Xcode, but I've been using it for some time now. I think I'm just accustomed to it and it doesn't get in the way. It can be a bit awkward at first for new and experienced alike.
 
OK, one question above all others:

I'm doing JAVA for the first time this session and, thus far, am HATING the IDEs. I'm very comfortable in Xcode for the simple stuff (I use it for C++ command-line stuff) so ideally I'd like to work in IT again (not doing anything too complex at all; actually it's procedural command-line now), yet I can't for the life of me figure out how to add runtime arguments to the build and run command in Xcode - which is an essential requirement for me for this current assignment.

Eclipse does have it, which is why I'm using it, but all the Windows icons are burning my eyes out.
 
Viro said:
After spending some time with C once again, and realizing that the API is just so much easier than Java or C# or C++, I'm beginning to think that IDEs are there to mask deficiencies in the design of APIs and languages.

Look at how complex file I/O is in Java. What does that add over the standard C I/O model apart from inefficiency and complexity? You need an IDE when your API is complex. A simple API that takes few arguments means you'll be productive even in a simple text editor. The threading model of C (pthreads or even fork(), but that's processes) isn't significantly more difficult than Java's. I've been forced to use C recently and I'm remembering why I liked programming in the first place. It's back to basics, where the language is simpler, and the code is just more elegant.

NOTE: This isn't to say that C is perfect. It just has a much simpler API and I/O is one example where it completely and utterly trumps Java. There are pointers to deal with, but good programming practices (stuff you should learn before writing C code anyway) deals with most of the issues. If you can't handle pointers, you probably shouldn't be writing code anyway.

I think what most people value about Java and many other languages is the *apparent* abstracting "away from the guts". It feels less "api-ish" to open a file stream reader object, than to deal with a pointer to a file descriptor or a file io handle. Matter of preference, if you ask me.

Another thing... probably the biggest to many people... is the fact that getting a GUI application running in something higher level like Java or C# tends to be a little easier. You don't often have to deal with message loops, low-level window construction, etc., etc.

For me, it's the fact that, unless I'm dealing with JNI-layered native stuff... which I generally try to stay away from... I *never* have to deal with *any* platform specifics. It's just not an issue. True, that sticking within the ANSI-C language and libraries, that becomes true for C as well, but you almost always need to hit the native APIs - especially when GUI apps are what's being discussed.

Again, I think it's desire and choice more than anything. I like Java. I like C# more and can't wait until Mono fully matures. But let's be very clear.. I don't love C# because it's a MS-born thing. I like it because C# and the .NET CLR spec comprise a "better java than java". Again, it's not innovative; it's evolutionary.

And good.

$.02
 
chornbe said:
I think what most people value about Java and many other languages is the *apparent* abstracting "away from the guts". It feels less "api-ish" to open a file stream reader object, than to deal with a pointer to a file descriptor or a file io handle. Matter of preference, if you ask me.

Another thing... probably the biggest to many people... is the fact that getting a GUI application running in something higher level like Java or C# tends to be a little easier. You don't often have to deal with message loops, low-level window construction, etc., etc.

For me, it's the fact that, unless I'm dealing with JNI-layered native stuff... which I generally try to stay away from... I *never* have to deal with *any* platform specifics. It's just not an issue. True, that sticking within the ANSI-C language and libraries, that becomes true for C as well, but you almost always need to hit the native APIs - especially when GUI apps are what's being discussed.

Again, I think it's desire and choice more than anything. I like Java. I like C# more and can't wait until Mono fully matures. But let's be very clear.. I don't love C# because it's a MS-born thing. I like it because C# and the .NET CLR spec comprise a "better java than java". Again, it's not innovative; it's evolutionary.

And good.

$.02

A well designed GUI API will shield you from the intricacies of a message loop. At least, that's what it should do. Qt and GTK to a large extent do this. You deal with signals and slots, similar to listeners in Swing. The only time I actually remember working with message loops was back when I coded Win32, a good 4 years ago now.

C can be truly portable, more so than Java or even C#. Take a look at all those GTK apps. Gaim/Gimp/Abiword is available on Windows with a bit of porting. Mono is nice because it's currently running on more platforms than 'sanctioned' Java (i.e. Java blessed by Sun). Try getting Java to run on platforms unsanctioned by Sun, and you'll find it a major chore. Look at the state of Java on PPC Linux. It's a mess, with no support for Applets or Webstart. The only VM available comes from IBM. Mono is much better in this respect, since it runs on pretty much anything and if you come across a new platform that isn't supported, you could always start a port ;).

Simple languages like C are nice. Once people get used to the low level concepts, that is. The only thing to watch out for is dangling pointers, but then a liberal dose of assert() everywhere will help make this a non-issue :D.

Anyway, it's nice going off topic with you , chornbe. We always end up having good discussions, which is nice :).
 
Agreed, thanks :)

It's nice to find discussion with someone like-thinking with different P.O.Vs now and then.

Oh, and smart, too. That helps :)
 
Back
Top