On a New Road : James Gosling on Apple and Java
nighthacks.com
nighthacks.com
It also didn't help that the early ports that they did were heavily
customized - far more than they needed to be.
This also reminds me of what Gosling said about Eclipse ... [Talking about Netbeans] To us, Eclipse feels like something very "me
too" and derivative, backed up by a really strange marketing campaign
Also on Eclipse's SWT: The SWT thing was just...it pissed me off beyond words.
...
It has all the AWT problems: it's way simple, it doesn't port very well.
Also on .NET's support for C++: [This] has left open a security hole large enough to drive many, many
large trucks throughIt even has a marketplace: http://marketplace.eclipse.org/
Netbeans is just a desperate attempt to not lose control, still slow, still unbearable L&F on both Linux and OS X. And have you noticed Oracle has a competing product? Versus Eclipse that's backed by a non-profit with lots of third party contribs?
I guess they'll get sued sooner or later.
For web or mobile development in Java, I prefer NetBeans and regard it as a well rounded up overall solution. I hear from Ruby programmers I respect it's really good for Rails work. For Python/GAE development, I prefer Eclipse because of Pydev. For Django and Clojure, I'll stay with Emacs.
For Java web development, I feel Eclipse is overly complex. Kind of flying a VTOL fighter to the supermarket.
It depends on ant for everything. The build files are very difficult to read, so it's like a black box. They are also cruel enough to name the root file "build.xml" so it interferes with you trying to make a convenient IDE agnostic build script. It depends on netbeans specific libraries for copying files (WHY?!). It's very difficult to get it to build from the command line. If you check out the hudson tutorial on how to get a netbeans project building in their CI server, you have to run a headless version of netbeans on the box to do it.
Not only that, the build scripts do some really crazy black magic. You can edit parts of them and your changes get ignored. It's like netbeans generates them every time you try to run. This allows you to do things like put echo statements in the build scripts that don't get printed out even though the target runs. It's really confusing.
It is not very organized. If you go into the "Options", it has 5 big buttons at the top. Most things are in the "Miscellaneous" section.
The debugger and profiler are really slow. When I remote debug, I have to click "step over" two times for one line of code. Expanding objects in the variables tab takes an annoying amount of time. My app is apparently too big to even start with the profiler. I've waited over 25 minutes before giving up. In intellij, the jprofiler plugin lets me start the same project without any noticeable slowdown.
Many many UI problems. You can't work with multiple "run" configurations like you can in the other IDEs. EG: If you want to run a certain unit test, you have to find it, go into it, and then run it. In the other IDEs, you could save that unit test as something to run and run it while you're looking at another file.
Speaking of unit tests, there's no way to run an individual unit test. The finest granularity is the entire file.
It crashes all the time. You're going to have to accept my anecdotal evidence here, but everyone else in the office complains about this, too.
The list goes on and on. I'm extremely skeptical of anyone that claims netbeans is good. I suspect you're using it as a glorified text editor instead of an IDE.
It's not 100% terrible though. One thing that netbeans is good at is generating code. I haven't tried in Eclipse, but netbeans' webservice generation support is better than intellij's. It also has a good Swing WYSIWYG.
Your suspicions are unfounded, I have never had an issue with Netbeans builds or it rewriting my files. It is a pluggable build systems where the build.xml is a templated file that pulls in the files that you are supposed to edit such as build-imp.xml and project.properties. These files do not get overwritten. I suspect you are using the build system wrong.
Further I like that Ant is used for the build because it gives me a head start on something I would end up having to write anyways. The build file is generated when you create a project, it saves a lot of time and is standardized. As for the org-netbeans-modules-java-j2seproject-copylibstask.jar it is a jar, I don't find it to be a big deal to install it on the build machine given the amount of time saves having the default build and deploy script generated for me.
The build script gives you a starting point not and end solution for testing, custom build instruction and other build related stuff you have to put in your own files and plug them into the build not edit the build directly. I don't find it that difficult and I think it is offset by what netbeans does for you. Further, on the remote occasion that Netbeans wants to rebuild the build.xml file it always prompts you before it does so, but even with that, you should not be modifying the build.xml you should be creating your own build files and importing them into the build system. Netbeans does this so when you add stuff like web services, JAX-B generated classes, JPA change from Glassfish to WebSphere it can auto generate all of the build and deployment instruction for those items. For me having all of that boilerplate stuff generated is a huge time saver for only having to make the trade off of keeping my custom Ant instruction in a separate file and copying a jar to the build server.
As for Hudson I cannot comment, we use Cruise Control,
It is not very organized. If you go into the "Options", it has 5 big buttons at the top. Most things are in the "Miscellaneous" section.
Not a show stopper for me, I spend all of 45 minutes in there when I do a fresh install and then I never touch it again. It does not affect my day to day work. This is also a preference thing not an issue with how Netbeans performs as a development environment.
The debugger and profiler are really slow.
I have never had an issue with the debugger being slow on my machine. I will give you that my Machine is top of the line so it may not be exemplary of the standard, but still no issue. In fact Netbeans has a feature that I have not seen in any other IDE, that is a must have for me now. And that is the fact that I can trace and debug from the execution of the Javascript in the browser, through the REST services, into the app logic and down into the DB. For me being able to step through the code from the JavaScript in the browser to the DB and back again is an amazing feature that I cannot live without now. It was the reason I switched to Netbeans on my friend recommending it to me based on that feature. Further the DTrace hooks are amazing, being able to see what is going on at every level provides another level of insight that I have not seen in other IDE's.
It crashes all the time.
We have never had this problem. We use Netbeans on OSX this may be a platform thing. I work with 10 to 15 freelancer at a time. We all use Netbeans and crashing has never been an issue.
I respectfully submit that the man who thought AWT was an acceptable GUI toolkit doesn't have a leg to stand on here.
Where did Gosling say that? I remember reading that AWT was a botched job because they had very little time to ship out a UI toolkit. They replaced it with Swing later.
And if you think Swing also sucks, then try developing swing apps in groovy. Java language sucks even in SWT UIs.
Sun to OS vendors: "Hey, we just promised developers they can run Java on your platforms. Now you go make it happen!"
Apple to Sun: "... you!"
Sun to NeXT: yeah, let's do this!
Sun to developers: "With Java you can write once and run anywhere!"
Sun to Lighthouse Design: Come to daddy!
Sun to NeXT: buh-BYE!
Sun to OS vendors: "Hey, we just promised developers they can run Java on your platforms. Now you go make it happen!"
Apple to NeXT: come to daddy!
NeXT to Apple: Avast ye swabbies - prepare to be boarded, arrrr!
(...time passes...)
Oracle to Sun: Come to daddy!
Apple to Snoracle: "... you!"
I'm not naive enough to see this as a moral issue. It's a quite rational and understandable business decision on Apple's part. I just doubt that treating your partners or even ex-partners like that is beneficial in the long run.
Can anybody give any examples of businesses centered on selling apps written in Java for OSX please?
http://twitter.com/crashplan/status/28403694811
(Alas, linebreaks stripped by the website.)
"Online Backup," "Windows XP, Vista, Windows 7, Windows Server 2003/08, Mac OS 10.4+, Linux Kernel 2.6, Solaris 10, OpenSolaris"
An online backup app, free for personal use, made for all common platforms is a "businesses centered on selling apps written in Java for OSX"?
Apple backups their own data to other's company cloud? I don't think Jobs would approve that.
Check it out. It's the only offsite backup utility I know of which not only covers all the bandwidth conservation bases (compression, data de-duplication, block-level updates), but also allows you to do an initial backup to local storage, ship or transport the disk, and then continue to back up to it over the internet.
And before some intrepid nerd starts waxing rhapsodic about rsync and tin cans joined with string, CrashPlan also offers a respectable UI, sensible default backup selection, end-to-end encryption, firewall traversal, email notifications, total OS agnosticism, and a free version with all of the above.
Hell of a product. I have no relationship to the company except that of a satisfied customer.
Mike - Code 42 Software
Steve McLeod knew that he'd never be able to compete with Pokertracker on Windows (it doesn't run on OS X), so he decided to focus 100% on the OS X side of it and add features as he was able, and I think that was an excellent decision. The product is quite good there and doesn't feel like an afterthought like many OS X products. It's a small market, but he's pretty much the only player in town, so...
a.) The platform was important enough that Sun would lose credibility if there wasn't a good JVM available (Windows, Linux), so Sun (now Oracle) did the port.
b.) The platform was minor enough that the platform would lose credibility if there wasn't a good JVM available (MacOS, AIX, HP-UX), so the platform vendor did the port.
I see this as Apple indicating that with recent growth in market share and cachet, they've now moved from category b.) to category a.).
You're wrong. Microsoft did their own Java VM implementation, got sued by Sun as early as in 1997 and had to stop distributing it:
Wikipedia isn't good on this, because they don't have the relevant release dates.
A Usenet post from December of 1995 says:
" I been using the JDK 1.0 Beta 1.0 with Netscape 2.03 on Windows 95 for about 3 weeks now. I just upgrade to the JDK 1.0 Beta 2 and guess what I can not run any local applets. "
Before Java 1.0 shipped in early 1996 (for Windows and Solaris), there were a number of publicly available betas on Windows, which is how the hype was generated.
Also, my recollection is that it was never the case that Microsoft's was the only JVM on Windows, or that Sun stopped work on their Windows JVM. The two coexisted. There was no point at which Microsoft was the only source of a JVM on Windows.
The fact that they split the feature-set for JDK7 due to time restrictions (aka plan b for jdk8) does not make me feel confident about them being able to throw out another VM for a different platform so quickly.
"Here’s my question, though: If Mac OS X 10.7 ships without a working Java JVM, will you be able to write Android apps using a Mac?"
http://daringfireball.net/linked/2010/10/22/gosling-java-mac...
Very clever and very sneaky, which is why Oracle/Sun is annoyed.
Still, it seems more likely that Apple decided that the cost of maintaining the Java port on OS X simply wasn't worth it. In the same manner that they decided that nobody wanted to use Flash on their smart-phones, they've decided that nobody wants to use Java on their laptops or workstations.
On Flash they took a political stance, i.e. Flash is proprietary, HTML5 / H.264 is the future, long-live Quicktime.
Okay, that's a little harsh. But apart from Android, Java doesn't seem to have much buzz these days. And Android gets into the whole lawsuit mess.
Also, there seems to be a lot of disruption in the Java space due to the Oracle acquisition. IBM ditching Harmony for OpenJDK, the Oracle/Google lawsuit, etc.
This seems like an opportune time to step away. Since the whole Java ecosystem is stirred up and reconfiguring, it makes sense for Apple to pull back before a new configuration has solidified. While things are fluid, let the Java organizations figure out what they want to do with OS X.
The existing version of Java 6 will still run (and Apple has said it will have support for the normal cycle, whatever that means).
Potentially other versions could appear.
WebObjects use of java is primarily server side, and as such has less (possibly little) GUI usage.
It may even be possible to run WebObjects on other platforms. That becomes an interesting situation if the license stipulates Apple hardware, but Apple no longer provides the proper runtime environment to use it.
It means deprecated for one rev and dropped the next. Just like they handled PowerPC supported in 10.4 deprecated in 10.5 gone in 10.6. So Java will be gone in 10.8.
Apple's implementation of the JVM may be gone in 10.8. That's not the same thing as saying there will be no JVM (and conversely no java of any kind). I suspect someone will step up to the plate, either openJDK or Sun/Oracle.
What did strike me about the announcement though was how nonchalantly it was made. I have to think this was on purpose given how masterful Apple normally is with their marketing. So that leads to the question of why? Was Apple in talks with Oracle that broke down so they simply called Oracles bluff?
By the way, all of the knee jerk reactions have been very amusing. Reading comments and stories about it yesterday made me think Apple came down and removed Java from every Mac in existence :)
Right. Don't those people know that even if you're running Linux, you still have to download and install a JVM?
I've said it before - Sun was stupid for focusing so publicly on "JAVA" (ticker symbol, etc) yet leaving the implementations up to other vendors. But now there's not even a Sun to complain to, so... :/
I don't know what you mean under "new Java/JVM updates" but anything that's GPL of Sun's Java can be used by everybody:
http://www.fsf.org/news/fsf-welcomes-gpl-java.html
as long as they also respect GPL, of course.
The maintainer of the OpenJDK binary packages for OS X, SoyLatte, recently tweeted that "A community supported Java implementation for Mac OS X (including native AWT/Swing) is a totally tractable problem." (http://twitter.com/landonfuller). Even if Oracle doesn't step up, it seems the OS X Java community will probably handle it. Moreover, since Java has been languishing at Cupertino for years now (the length of time till Java 5 shipped, Java 6 32 bit), it's likely the community will handle it in a better way, with more frequent updates, than Apple ever did.
The soy latte stuff makes you type in a 'iam not a crook' license code to download, and only mentioned 10.4 and 10.5. It gives every indication of being a garage-hack-only thing for bleeding edge BSD grey beards, not something that is a drop-in replacement for current OSX users.
I want to use it - I tried soylatte last year - didn't work well enough for my purposes on 10.5.
The main point of the test was to see how close the system was to being even usable. Considering Apple have maintained the OS X Java for a decade, I expected there to be no alternative that was even vaguely close to running "Hello World", let alone running something as complex as Eclipse. Instead, it worked pretty damn well, and (modulo licensing), I suspect even I could package up the results into a DMG that 95% of people could use to, i.e., build Android apps. More than that, consider the worst case scenario for OS X Java...
1) Apple don't ship anything with 10.7; 2) Oracle don't ship anything, nor do IBM; 3) Getting old versions of Apple Java running is impossible
Then, the real community experts have a nearly whole year of lead time (until Summer 2011, the earliest Lion ships) to convert what already limps along quite well into a decent Java SE SDK and runtime experience. This seems well within the grasp of them. Of course, if the community doesn't step up because it's not interested, then that rather makes the point that Java on OS X just isn't relevant any more.
I miss the pay for what you use model.
As to burning CD's, I did say that it would only get you "most of the way" there!
So my vote goes to web for cross-platform while heavily optimizing everything else (everything client-side, at least) for the one platform it natively runs on. I don't see great user experience coming through a different route.
If you do need native capabilities client-side, hybrid apps that embed a UI built using web technologies are a potential option sometimes, too.
More precisely, Microsoft violated their contract when they added classes and methods in the "java" top-level package (namespace) and failed to implemented some mandatory parts of the specification (mandatory as per the contract), such as RMI.
Source: http://www.javaworld.com/javaworld/jw-10-1997/jw-10-lawsuit....
Far from it. First, Apple's version will stay for a while. For further future, Java is GPL-ed, and also see: