Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
James Gosling: Quite the Firestorm (nighthacks.com)
119 points by bokchoi on Aug 15, 2010 | hide | past | favorite | 53 comments


This sentence makes me cringe: "There is enough fragmentation among Android handsets to significantly restrict the freedom of software developers."

It uses the word "freedom" in that doublespeak-y way that is used in the "Handmaid's Tale" when they talk about giving citizens "freedom from" social deviants by establishing a totalitarian state.


I think he actually makes a good point - remember what James Gosling has been through with the Java/Microsoft scandal. What would happen if Microsoft decided to make their own Android handsets tomorrow, but "embraced and extended" the Dalvik VM to run some special .NET code? If they gained significant marketshare, they could hijack the Android mobile platform as their own, just like they tried to do with Java.

I'm not saying they would do that, or even that they should, but I think this is the line of thinking that Gosling is coming from. Java has always had "write once, run anywhere" as it's motto. Android should try to stick to that ideal as well- it would do the platform good.


     remember what James Gosling has been through with the Java/Microsoft scandal
Yes, I remember Microsoft releasing the first JVM that did JIT compilation. I also remember them having the only usable IDE for Java at the time.

I also remember them wanting to add "delegates" to the standard, with Sun responding with an idiotic reply for all to view here: http://java.sun.com/docs/white/delegates.html

Delegates which are now being added through the back-door in the InvokeDynamic JSR ... oh, the irony.

If Java is a standard, then Sun should have let others participate. Imagine if the Javascript standard / trademark was controlled by Microsoft, and they would sue Apple / Mozilla for adding "proprietary" extensions to it.

Want to avoid fragmentation ... then don't build cripple-ware.


I'm admittedly not a Java expert, and I'll grant you, Microsoft's VM might have had some cool features - hell I bet if you gave them enough time they would have had GPU accelerated 3d graphics available in a browser through Java - for Windows platforms only.

The problem with Microsoft is that they are a habitual monopolist and their method of choice is embrace, extend, and extinguish. They were already on step 2 of their plan before Sun's lawsuit stopped them.

Do you really think Java would be in the state it is today if you had to target a different VM for every OS? Microsoft always tries to lure developers over to their platform with the "ooh, shiney" factor of new APIs and features. This is like cheese in a mousetrap. Once they have you hooked on their APIs you're screwed.


     Java has always had "write once, run anywhere" as it's motto. 

Have you found that to be true? I found it to _often_ be the case, but no assurances; you had to pick wisely.

Java has had its own problems with fragmentation, despite the motto.

If you're going to allow for the variation and variety needed for robust development and platform progress you have to allow for the risk that not all code will always play nice together. That's life.

I'd like to see a Microsoft Android. I've few worries about some heavy-handed market dominance, though, since there are few barriers to entry for anyone else to jump in and try the same thing (unlike what was the case with Java when Microsoft was interested).


It's a goal, but we all know how goals don't always jive with reality.

It would still be nice to take Java code and run it on any server platform I choose. If a project is written well, it can, which is a major win for Java.


How is this double speak? If every state in the US had its own standard for gas pumps, and everyone traveling had to maintain a collection of nozzle adapters in their trunk, that would impede freedom of travel. Fragmentation and non-standards hurt freedom under its ordinary meaning.


" ... that would impede freedom of travel. "

No, it would impede ease or convenience of travel. Not freedom.


OED, 2nd Ed.

    freedom, n.
    8. Of action, activity, etc.: Ease, facility, absence of encumbrance.
You may have political beliefs about the utility of positive liberty, but that doesn't mean he's misusing the word.


True, that is a definition. However, I think that in this circumstance we can all agree that freedom is a loaded word.


Word are only "loaded" when we try to use a clearly defined word as a label for some movement or political soundbite. Freedom has a very simple meaning that has been appropriated by different groups as a not-so-accurate label for their activities.


"You may have political beliefs about the utility of positive liberty, ..."

Ah; this is ideological for you.


But it's fragmented, and there are is no TRC (Technical Requirment Certification).

For example how the application should deal with built-in keyboard, or without. What should it do when rotated. How different resolution would work.

There is also no formal requirments specification - e.g. this app requires builtin keyboard, et.c


But it's fragmented, and there are is no TRC (Technical Requirment Certification).

Yeah, but the comment was about the term "freedom", not "fragmentation".


What? Dealing with a physical or a software keyboard is well defined in Android. Dealing with rotation is a foundational element of the system. Dealing with different resolutions is a foundational element of the system.

>e.g. this app requires builtin keyboard, et.c

Again...what? Android provides EXACTLY this functionality.

Gosling lost me when he decided to essentially cover-his-technology-ass with the Android remark. "Fragmentation" in the Android ecosystem is almost entirely simple version fragmentation, and even that is rapidly resolving. On specific handsets there are extremely few device-specific edge conditions, like a peculiar 3D performance profile on some devices. This is nothing like the absolute disaster that J2ME was, where they tried so hard to abstract everything to the absolute lowest of the lowest common denominator, and what was left was simply trash.


There's a few oddities that come from the custom UIs, which make it kind of annoying if you want to design a good looking, consistent-with-the-rest-of-the-phone experience. Admittedly, this isn't a huge problem, and indeed is only a problem with a few of them (Sense UI, mostly), but since almost every manufacturer has a custom UI, it can be a pain.


I don't understand this point. I have an HTC Desire with Sense, i downloaded a bunch of apps from the app Market over the last few weeks, and I never noticed any differences in UI between the build-in spps and the ones I downloaded.

Have you ever had to make adjustments to your apps to make them look good/OK on, e.g., Sense? What kind of adjustments were they?


I hold the same questions, both as an Android developer and as a Android app consumer -- Sense plays zero part in my development, and as a user while it changes the home screen and offers some widgets, it does nothing to change individual apps. Nor does Motoblur, or Sony's Rebecca or whatever they call it, or LG's....


Rightfully downvoted. I got carried over. I have the first T-Mobile G1 and I can't update the OS, can't download new apps... That makes me sad :)


I admire and respect Dr. Gosling. But I don't think he's reached the acceptance stage vis a vis Sun's great sickness unto death: Java. As technology, java is an adequate synthesis (and advancement) of bracey-block syntax and UCSD-p system platform abstraction. Lots of potential that failed to ever materialize. Sun's aggressive marketing of java as the solution to everyone's problem stagnated the language, starved the company's other engineering efforts, doomed them to the reign of a feckless boy king, and drove them into the arms of a suitor that walks the walk Sun was talking since at least the Javasoft era.

Gosling's characterizations of Sun may have applied pre, say, jdk 1.2, but Sun choose to bite the apple, to compete with (and sue) Microsoft, to attack competing technologies, to restrict competitive products--basically to act just like everybody else. The result is a dreadful technology: PL/1 for the 21st century, embedded through every industry, taught in every school; and a zombie Sun persisting in the bowels of a ruthless "devil" they thought to slay.

I'm sure Dr. Gosling knows the changes that Sun went through on its long downward spiral better than just about anyone else, but I wonder if he's willing to acknowledge the role that Java qua product played in sealing Sun's fate and the fate of technologists for whom Java is now the default with which they must labor? An apology for Java(tm) would make the elegies a bit more palatable.


Verbose as it is, even Java doesn't employ that many ponderous mixed metaphors.


I think youre attributing bad intentions where incompetence would suffice. Also since the main selling point of Java was portability I think Sun was correct in going after implementations which diverged significantly. Sun might have fumbled on a lot of different things, ethics doesnt appear to be one of them.


My recollection of Microsoft J++ was that it was basically a superset of Java, with the added features allowing you to take full advantage of Windows features. This gave developers the option of sticking to the standard Java features, and ending up with a portable application, or using the extensions so as to write an application that would actually be able to compete on an even footing with non-Java applications. Gosling makes it sound like you could not use J++ to write a portable program.

Sun insisted that Java should be "write once, provide the same inferior experience everywhere", and the result is that Java is pretty much completely dead on the desktop.


J++ was missing several key interoperability features like JNI (instead it required idiosyncratic native code that no JVM could run) and RMI (it couldn't make remote procedure calls at all, unless you roll your own). And rather than sticking to their own packages, they deliberately poisoned standard classes (I think this even included java.lang.System!) with nonstandard methods whose absence would prevent your code from even loading on a conforming JVM.


If I remember correctly, and this was a long time ago, J++ also didn't support .JAR files, and only was compatible with .CAB files for compressed sets of files.


If Microsoft had stuck with "embrace and extend" (rather than embrace and distend), it wouldn't have been a problem. I was (attempting) to write desktop Java during the MS/Sun wars, and it was beyond annoying. MS had a habit of slightly altering the behavior or syntax of things.

You were usually OK (but annoyed) if you developed using the Sun VM and then ported (yes, it was a port) to MS. If you started on MS, it was a horrid process to get to Sun's VM.

What really sucked was, as part of the embrace, their tools were the best tools at the time (compiler, debugger, vm). The "extend" part was even OK (sometimes it was handy to have easy COM access). It just sucked when the distend part came.

(Just don't ask about the time my company was partnering with Microsoft on a project and I built the software using Netscape's foundation classes. Stupid little dot on their scroll bars...)


What really sucked was, as part of the embrace, their tools were the best tools at the time

How does it suck that you were using the best tools available at the time?


Because you couldn't use them due to Microsoft distending the language. You weren't guaranteed what you build using VisualJ++ would actually working on another VM. When using anything that did code generation (which a lot of AWT tools did), you ran into this possibility.


J++ applications did not run on Sun's Java SDK. Microsoft sold it as Java but it was incompatible with Sun's Java implementation.


That's not entirely true. At the bank I worked for way back in 2001 we used MS J++ to create a web app that was deployed on Netscape's iPlanet which used JRE 1.1 from Sun and it all ran on a HPUX server that talked to an IBM mainframe.


I have a lot of respect for James Gosling but claiming that J2ME is more developer friendly than developing for Android is kind of ridiculous. IMO Anyone who has tried to write apps for pre-Android phones using J2ME and tried Android development would prefer Android any day for both business and ease-of-development reasons.


Can you point out where Gosling makes the claim that J2ME is more developer friendly ? From my reading of the article he mentions the fact that J2ME fared poorly on code portability across devices and that android fares even worse. He does not address which is more developer friendly in the article at all. As an aside I do agree with him that Android is more fragmented now than J2ME was back in the day.


As ergo98 said, fragmentation=lack of portability=non-developer-friendly.

Android is far, far better at code portability than J2ME in its (non) hey-day, if for no other reason than that I don't need to have my Android app certified by each handset manufacturer. Furthermore, Google's app certification process is basically generating a private key and signing with it, if you just want people to download your app from your website. It's a little more complex if you want your app to be in the Market, but still simpler than Apple's.

I keep reading about the lack of Android portability but the android App I developed for internal use at our company works equally well on a Motorola i1 (iDen, Android 1.6) and a Sprint Evo (4G, Android 2.2)


>As an aside I do agree with him that Android is more fragmented now than J2ME was back in the day.

Eh?

What with MIDP1.0 (which doesn't even have floating point), 2.0, CLDC1.1 and 2.0, plus various JSR's, and, the real killer, serious, often strange incompatibilities between devices (and there are at least an order of magnitude more J2ME devices out there), I'm not really sure how you can make that claim.

Fragmentation is certainly a worry for Android, but stating that things are currently worse than with J2ME seems very inaccurate.


>From my reading of the article he mentions the fact that J2ME fared poorly on code portability across devices and that android fares even worse.

Well clearly having worse fragmentation would be less developer friendly, would it not? One follows from the other.

>As an aside I do agree with him that Android is more fragmented now than J2ME was back in the day.

No one who actually developed for Android and J2ME would even dream of saying this. Gosling gets too much of his news from Engadget, I suspect.


It might be just me but when someone says developer friendly I imagine theyre talking about a solid api, easy development cycle, good documentation , helpful community. If someone were to talk about one use case thats more broken on one platform vs another I would not parse that as one platform is more developer friendly vs another.

Its been sometime since I tried to hack anything on android (i briefly tinkered with it around version 1.6) but here is an example of some cross device breakage that I ran into - http://code.google.com/p/android/issues/detail?id=1480 .


That is the poster child of different behaviors -- bring up Android fragmentation, and it's invariably what gets brought up. Sure, it's a problem. It should behave consistently. It's one very, very, very small element of the platform.


Having intents without having a mechanism to specify an interface for applications that handle intents is the part that seems broken to me. As I said I have not been following android so I do not know if this has subsequently been addressed.


He claims that Apple doesn't like Java because it doesn't lock you to their platform. But Apple worked very hard to support Java as an alternative to Objective C, they basically ported (or tried to port) the entire API to Java but it never really got traction. I'm not sure whether it was because all the folks who were early developers for OSX came from a NEXTSTEP background and already had a legacy in Objective-C, or whether the message-based method invocation of Objective-C was just more flexible, but for whatever reason it turned out to be a dead end.


Yup. Apple stopped supporting the Java to Cocoa bridge because developers weren't using it. It is a huge uphill battle trying to make an App written in Java look good and run with a native feel. Apple doesn't like Java on the desktop because Apps look like this: http://twitpic.com/2djc4u

Apple still uses Java on the server. For example, the iTunes e-commerce back end is written in Java.


Apps written in Java using the Cocoa bridge did not look like that, they looked exactly like Cocoa apps. Pretty much the point of the bridge, its eventual failure notwithstanding.


There are some success stories. Cisco uses it for their ASDM client:

http://imgur.com/hvGxp.png


Yeah, but look at those awful buttons and the weird nonstandard border in the top half.


Apple ported WebObjects to Java; a massive task


The Java bridge had issues because of the dynamic nature of Objective-C.


We survived, but to help protect us from future suits we went on a patenting binge. Even though we had a basic distaste for patents, the game is what it is, and patents are essential in modern corporations, if only as a defensive measure.

This illustrates very clearly just how dangerous (if understandable) this mindset is. Don't fool yourself that you're only filing "defensive" patents. A patent is a weapon and the fact that you don't intend to fire it is no guarantee that somebody else won't later. What's worse, with everybody patenting every dumb thing under the sun out of fear, there's that much more ammunition lying around for unscrupulous people down the road to use.


The ads on the left side had me laughing. They are Google ads--and every one of them when I visited the page was for attorneys and services offering to help people get patents.


Ad systems currently fair very poorly on content which contains a negative commentary about a topic.


I was about to make a post that stated this same irony. He should switch to another ad platform if he's vehemently against patents. Advertisers are selective about content all the time, why should content producers be any different? It makes their purpose-driven preaches less authentic.


I didn't know that page had ads in it ..


They had very weak notions of interoperability, which, given our history, we strongly objected to.

The trouble here is the assumption that Sun's notions of interoperability were inherently better and that it makes sense to appoint Sun as a global steward of interoperability. Given the history of what, making cellphones?


The "How To Patent Your Idea" ad, along with the "Ads by Google" caption, on an article by the creator of Java about Oracle suing Google is slightly ironic...


Can't James Gosling afford an ads-free blog? Geez...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: