Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Originally posted by iJed

I would just like to say that it is a common mistake to think that Java is only for web based apps. There are plenty of console progs written in Java and many apps that do many things. Take JBuilder for example...

In general, Java as a client application foundation is nowhere near as successful as Java as a server back-end application foundation. Swing (Java 1.1+ UI toolkit) is nice and much faster than AWT ever was, but still just can't compare to "native" UI widgets for either functionality or performance.

Personally, I currently am involved in about 90% C++ and 10% Java, but have been involved with Java since the 1.0e (I believe) release in 1997. Aside from one ill-fated project and a smattering of developer-only utilities (as often as not with no "real" UI, just console output), I've rarely encountered a client-side Java project.

On the other hand, Cocoa in Java is definitely not the advised route. Cocoa in Java would give a more useable (albeit non-portable) UI than bare Java/Swing, but the Objective C API is the "primary" API for Cocoa and I see no signs of that changing. I believe this was stated quite directly at last year's WWDC.

Personally, I don't use the 1.4 features yet. For me, 1.2 is the watershed Java version (and I'm too used to the various containers to easily support 1.0 or 1.1 these days). But if you are using 1.4's features, obviously Apple supporting 1.3 up to now just doesn't quite cut it ...
 
Can somebody clear this up?

The last time I programmed was using Applesoft on my II+. I've known that the idea behind Java was its cross-platform ability. I've also heard complaints that it runs slowly on Macs. Limewire is the only program that I've heard was written in Java and I know that that is slow as beans (I prefer Acquisition). Here's my question: Does writing for cross-platform usage entail that the program has to be so butt-ugly? Limewire looks like something I would find on a PC or an old Silcon Graphics Box, something that was created by an engineer with a very limited aesthetic ability. Is it possible to write a cross-platform Java application that still looks at home in OSX?

Thanks. - j
 
Re: Can somebody clear this up?

Originally posted by jayscheuerle
The last time I programmed was using Applesoft on my II+. I've known that the idea behind Java was its cross-platform ability. I've also heard complaints that it runs slowly on Macs. Limewire is the only program that I've heard was written in Java and I know that that is slow as beans (I prefer Acquisition). Here's my question: Does writing for cross-platform usage entail that the program has to be so butt-ugly? Limewire looks like something I would find on a PC or an old Silcon Graphics Box, something that was created by an engineer with a very limited aesthetic ability. Is it possible to write a cross-platform Java application that still looks at home in OSX?

Thanks. - j

Having written my first program years ago using AppleSoft on a IIe, and then not touched a computer for a decade, I can relate. I'm currently taking an Intro to Java course, and from what little I've seen is that, no, cross-platform compatibility shouldn't necessitate a compromise. Sure, there may be some performance hit due to the use of bytecode and a VM, but todays compilers and sheer processor power more often than not make up for it. As has been pointed out, LimeWire is probably just a piece of crap, code-wise. I think that any language can be leveraged effectively by the use of proper programming techniques and a fair understanding of existing APIs.

Just my humble opinion.

(tig)
 
Re: Can somebody clear this up?

Originally posted by jayscheuerle
Here's my question: Does writing for cross-platform usage entail that the program has to be so butt-ugly? Limewire looks like something I would find on a PC or an old Silcon Graphics Box, something that was created by an engineer with a very limited aesthetic ability. Is it possible to write a cross-platform Java application that still looks at home in OSX?

Thanks. - j

Well, Swing has a "skinnable" interface (I forget what they call it ...) which will allow it to look like any OS, it's own "Metal" look, or the host OS (ie, the same app would have OS X controls on OS X and Windows controls on Windows).

However, the color and shape of the UI widgets does not entirely define the OS X experience. This is a large part why Java's "write once, run anywhere" promise is not as popular these days: if you want your Java app to look and feel like an OS X app you have to design the UI as an OS X UI, not just change the skin to an OS X skin and think it's good enough.

So, while it is certainly possible to make an app look cosmetically the same across Win and OS X and whatever other OS's LimeWire supports, it is not practical to have it behave like a native app across all OS's. In fact, that particular area of cross-platform coding is at least comprehensively simpler in a compiled language like C++, because Java hides as much about the underlying system as possible at runtime. For a C++ program, you'd have an API upon which your MVC-based UI sits, and you'd program a different UI for each platform. A lot more work than the Swing solution, but it ends up being much nicer for the user.

All this is in my own experience, which may not be 100% current regarding the Java UI elements these days, so take it as you see fit ...
 
Re: Re: Can somebody clear this up?

Originally posted by jettredmont

However, the color and shape of the UI widgets does not entirely define the OS X experience. This is a large part why Java's "write once, run anywhere" promise is not as popular these days: if you want your Java app to look and feel like an OS X app you have to design the UI as an OS X UI, not just change the skin to an OS X skin and think it's good enough.

Excellent point, and one that I completely overlooked. And in this area, LimeWire actually does a pretty good job of emulating the over-all look and feel of the OS. A couple of versions back, the windows behaved like Windows; i.e. menu items attached to the window. In the more recent builds, the menu items are where they belong in a Mac app - in the menu bar at the top of the screen. And the items contained in said menus are where they should be; Preferences in the 'LimeWire' menu, file selections under 'File', etc. Compare with JavaDC; while there is the option to have the basic look to be 'MacOS adaptive', the over-all feel is not that of a standard Mac app.

Just my opinion, and subject to criticism.

(tig)
<edit> spelling error
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.