programminglanguageplatformwar (ThoughtStorms)

Context PlatformWars/PhilsInterests

For a long time, I thought JavaLanguage was so self-evidently crap, that it was only being kept going by a life-support of hype and pump-priming by Sun, and naive universities and companies run by fresh-out-of-college-kids. And that one-day this system would catastrophically collapse. (Probably beaten by something equally lame like CSharpLanguage)

But now, I'm actually starting to get worried. That maybe JavaLanguage is close to winning a platform war and getting locked-in for a long time. (I'm in my mid 30s. So "a long time" could conceivably last until I retire as a programmer.)

So I'm feeling I really need to get involved in the coming PlatformWar between JavaLanguage and PythonLanguage (or similar scripting language) to try to prevent this evil outcome.

I think ManageAbility hits the nail on the head with his analysis of why Java is beating Python : TheArchitectureOfParticipation (AoP). Hence his response to PaulGraham's GreatHackers.

Why is Java winning?


Another discussion. Is RubyLanguage winning on the web because of problems with PythonForTheWeb?


Some other causes of Java's rise

And then there are probably some other interesting (lucky) contingent events.

: XML is such a pain everyone wants to use standard libraries to manipulate it. And Java got those libraries early, managed by a good / respectable free-software committe : Apache.

: At the same time, everyone got so lazy to write parsers for LittleLanguages (possibly because universities were side-tracked teaching GUIs and web-services and XML) that they use XML for all kinds of stuff where it isn't appropriate.

: Hence some PositiveFeedback : widespread XML creates need for Java's libraries, and wide-spread use of Java and it's libraries disincentivates alternatives.


Another analysis of the advantages of Java

Python is not Java : http://dirtsimple.org/2004/12/java-is-not-python-either.html

: By the very nature of what something like OSGi does, it has to be specified in terms of interfaces. There are multiple platform implementations that load bundles, and of course there are many, many bundles, and services offered by those bundles. Without interfaces, there would be "no there there" -- nothing to exist or document.

This is echoing the architecture of participation thing really. Or rather, Java is a culture of participatory discipline in that it encourages ArchitectureAstronauts to come up with high-level interfaces that describe how certain large chunks of functionality should talk to each other; and then members of the community actually diligently sit down and implement these specifications. Even when they get burnt as Sun prototypes and drops one competing standard after another, someone still sits down and implements it all. It's this self-discipline in following orders by the community which is it's strength (and what makes it so off-putting to the TypesOfProgrammer who are attracted to Python).

The question is this :

: eg. freestyling for a moment here, compare Rest vs. more complex WebServices specifications. Can there be minimal Interfaces / protocols for different frameworks to communicate?

Discusison of inerfaces continues on PythonInterfacesAreNotJavaInterfaces.

(I started writing a comment which I didn't post but became PythonBlackBoardArchitecture)

And read the discussion on OptionalStaticTyping : for http://www.artima.com/forums/flat.jsp?forum=106&thread=85551 for more thoughts on how Interfaces are important to the platform war.


How to fight back

1) Python needs AGoodIDE (and one which is FreeSoftware).

2) Python has XML libraries.

3) Jython on top of JVM, IronPython on top of CLR

At the moment, the main use of these languages is to take advantage of the libraries on the two underlying platforms. These are transparent in that they don't really hide the nature of the underlying platform. (Though maybe that doesn't matter much.)

4) How can Python get more AoP?

...


Compare :

See also :