Easy and Open App Distribution: There’s a Platform for That | PreCentral.net

Palm has made it official: in December, they will facilitate any developer to distribute any app to any Pre owner: directly and easily. The lingering questions about whether ‘sideloading’ (allowing users to install apps directly instead of through the app catalog) and whether their policies regarding app distribution and open source software have all been resolved in one fell swoop. The resolution, as Derek wrote, is that any developer can submit their app to Palm, who will then provide an URL which will directly install the app — Palm won’t hinder, review, or otherwise throw up roadblocks. There are more details from the developer relations team here and though in this giddy, late hour I don’t see devils in those details, it’s possible they could be there.

Really, really awesome news. Totally changes my thoughts on the Pre (yeah, people are probably getting whiplash by now). If the Pre makes it to Verizon this will definitely be my next phone.

iTWire – No FOSS for Palm app catalog says Netscape pioneer

It appears Palm is seeking to follow Apple’s footsteps in gaining a reputation for inconsistent and spurious rejections and removals of iPhone and iPod Touch applications. In this case, Palm has resisted including a free application because the source code is attainable elsewhere.

It’s getting to the point where there are zero good options for a cell phone. I had high hopes for OpenMoko’s Neo FreeRunner but I think it’s still kind of iffy that it’s usable as an actual phone (though it’s a seriously cool project), and even if it does work I believe I’d have to be on T-Mobile to use it. I’m too happy with my service, call quality, etc. on Verizon to switch.

I’ll have to look more into Android I suppose (if they ever make it to Verizon) but I’m starting to think I’ll just get a burner and call it a day. Until the mobile companies start being so draconian about everything, low-tech might be the way to go.

How to Fix Windows 7 Sharing in VirtualBox

Like many of you out there, I’ve searched and searched on the Internet for a solution to this issue, which I’ve also noticed to be quite popular (why should it be? you create something on the virtual machine and you want to save it, right?), and many guides are incomplete or they point you in the wrong direction. Therefore, I present today  a step-by-step tutorial (with screenshots) to this very simple-to-fix issue (you won’t believe how simple it was in the end).

On the rare occasion when I have to use Windows I use a VM in VirtualBox, but Windows 7 folder sharing doesn’t work as it did with XP for some reason. Easy enough fix–full details in the article but basically you set up the shared folder and then map the drive using vboxsrvsharename

Steve Jobs, As Demonized By His Nemesis – doubletwist – Gawker

Oh how the worm turns. Can’t say I disagree. Apple started out as an “alternative” with their “Think Different” campaign (to contrast with IBM’s “Think” motto), but between iTunes and the iPhone they want control over every aspect of people’s digital lives. High time Apple went back to their roots–I think the backlash has been building for quite a while and the tighter Jobs clenches his fist the more customers will slip through his fingers. Or something. 😉

“The Open Internet: Preserving the Freedom to Innovate”

I believe we must choose to safeguard the openness that has made the Internet a stunning success. That is why today, I delivered a speech announcing that the FCC will be the smart cop on the beat when it comes to preserving a free and open Internet.

In particular, I proposed that the FCC adopt two new rules to help achieve this.

The first says broadband providers cannot discriminate against particular Internet content or applications. The second says broadband providers must be transparent about their network management practices.

Given how out of touch and backwards government usually is on the Internet, this is a very welcome shock.

Additional Thoughts on “Is Java Dead?”

Part of how I use posterous is as a web scrapbook of sorts, and it’s a great way to keep the full version of something I come across on the web that I find interesting. Still find it odd you can’t edit the excerpts posterous generates, but on the other hand if the original link goes away, then I still have it handy.

Anyway, someone on Twitter asked if I had any thoughts on the “Is Java Dead?” article I found earlier today, and although I had a couple of comments at the bottom of that post, I have a lot more to say about the continual predictions of Java’s demise.

Living in the CFML world for so long I’m used to people proclaiming that one of my technologies of choice is dead. For those not in the know ComputerWorld put ColdFusion on their “Top 10 Dead or Dying Computer Skills” list in 2007/. In the top spot on their list was COBOL, but more on that in a moment. I won’t rehash the whole ColdFusion is Dead trope here, but semi-related to my recent Grails post, I did find a blog post by Dave Lowe from 2007 on this topic that was particularly rational, and it begs the question: has enough changed in two years? I’d say yes and no, but that’s fodder for another post …

Back to Java. The timing of the “Is Java Dead?” post is interesting given that COBOL just turned 50. According to ComputerWorld and many others, COBOL is dead and has been for a long time. The irony here is that COBOL runs most of the world’s ATMs and, according to the article, powers 75 percent of the world’s business applications. I’m not sure how they define “business applications” and that number seems rather high to me, but regardless of the specific statistics, it’s fair to say COBOL is far from dead. As a COBOL programmer friend of mine always says, “I’m not a dinosaur. I’m a shark.” (He’s referring to the fact that sharks have been around for millions of years but are still here and still to be feared, in case that wasn’t obvious.)

Java has still to appear on any ComputerWorld obituaries (only a matter of time), but it seems that every year or so, much as with CFML, people fire up the death rumors once again. This year in particular that’s to be expected since nothing fans the flames of FUD more than Oracle’s acquisition of Sun. And to be frank, the mechanisms for Java to evolve aren’t particularly speedy, which even Sun predicted back in 2000. (Some interesting parallels there with what’s going on in the CFML world today.)

So is Java dead? To answer that we first have to consider what Java is, and it’s much, much more than the OO programming language people love to hate.

What’s Java?

In the first Java programming class I took at Sun back in 1999, the first question my instructor put on the whiteboard was “What’s Java?”

People in the class had various answers, but none got at what the instructor was looking for. “Above all,” the instructor eventually revealed, “Java is a platform.” So Sun had the platform in mind from the start, and it turns out that’s the smartest thing they could have done.

Java is of course also a programming language, and as such it’s great. I can hear people disagreeing already, so let me support my assertion a bit. By “modern” standards (whatever that means) Java is more verbose than people would like, it’s too strict, and compared to languages like Groovy and Ruby it seems downright dated. But what the Groovy, Ruby, Python, etc. advocates forget is that without Java they have nothing against which to look good.

OK, I’m being facetious, but I hope you get my point. Java wasn’t designed to be the latest whiz-bang dynamic web 2.0 wunderkind because that wasn’t the state of the world back in the 1990s. When Java 1.0 was released in 1996 it was, hard to see 13 years later, revolutionary. The garbage collection alone put it lightyears ahead of C++, and Java had serendipitous timing with the advent of the Internet as well.

As a language Java is admittedly rather stodgy compared to the fancy new dynamic rapid ajaxified agile toolkits we have at our disposal today, and yet with JRuby, Jython, and more directly in the case of Groovy, not to mention CFML, modern languages want to run on the Java platform because it’s ubiquitous, it’s powerful, and it’s not going anywhere.

Java as a Platform

Regardless of your opinions of Java the language, there’s much to love about Java the platform. Sun’s original claim of “write once, run anywhere” is technically true even of C and C++ given the one additional step of native compilation, and this slogan has frequently been bastardized into “write once, test everywhere.” But on balance Java lives up to its run anywhere promises, and this is precisely what allowed Java to grow and become as entrenched as it is today.

The notion of a virtual machine, driven by Java’s origins as a platform for set-top boxes, turned out to be a stroke of genius that went far beyond its original intent. It was head of its time, to be sure. The notion of a compiled-yet-interpreted language was odd, and at first Java was dead slow compared to natively compiled languages. The promise–and actual delivery–of true portability was compelling enough for Java to take off, however, and these days the speed argument against Java is wholly irrelevant due to tremendous speed improvements with Java itself and the ridiculously powerful machines we have at our disposal.

So take or leave Java as a language, but as a platform Java got things 100% right. Where web applications in particular are concerned, I still get a big smile on my face every time I drop a single WAR file on a servlet container to deploy my applications as opposed to FTPing scores of individual files, and that’s all thanks to the Java platform. Java thought well beyond being just another language and continues to be hugely compelling on the platform side even if you prefer to write your code in another language.

What Else is There?

Most of the arguments against Java are against its perceived shortcomings as a language, but even on that front Java does what it does incredibly well. It’s extremely fast, and if you need the features that a strongly typed language has to offer, you could do far worse than Java. If you want to go with one of the newer kids on the block, where something like Groovy is concerned you really do get the best of both worlds: dynamic features for rapid development, with the speed of Java and access to the huge Java ecosystem at your fingertips.

When people claim that Java is dead and focus on the language, they’re completely missing the all-important platform piece of the puzzle. So on this point I’d like to ask a blunt question, and one that none of Java’s naysayers ever get around to answering: What else is there? What else out there offers what Java does as a platform?

To my mind the answer is nothing, so if Java truly is dead we’re all a bit doomed. The closest corollary is the .NET platform in the Microsoft world, and therein lies the problem: it lives in the Microsoft world. People who know me know that makes it a 110% non-starter for me, but from a more objective standpoint that’s an issue for much of the rest of the world as well. Why would people sink a lot of time and money into developing business applications that will only run on Windows servers? Yes, there’s the Mono project that allows .NET CLR languages to run on Linux, but I suspect over time that effort will wane, and even now it’s well behind the official MS version. The gNewSense project just announced it’s eliminating Mono from its distributions, and given public opinion on the matter Ubuntu will likely lean in this direction as well.

So 13 years after its release, if you want write-once run-anywhere applications, great speed, and a tremendous platform on which to run all your apps in multiple different languages, Java truly stands alone.

Long Live Java

Even though Java’s a bit long in the tooth in the opinions of some, all these years later it still offers things no other technology does. If Java is truly in jeopardy all of the efforts to run more modern languages on the Java platform wouldn’t continue. Java still has tremendous value as both a language and a platform, and if anything Java seems to be experiencing a renaissance these days from where I stand.

A friend asked me just last week if I thought taking Java classes and learning Java was a good idea. I didn’t hesitate to answer in the affirmative. Java as a skill is still in large demand, the Java community is alive and strong, the number of powerful open source projects written in Java is astoundingly deep, broad, and diverse, and given the other options in which my friend could spend his time and money, Java still comes out well ahead.

Java’s not a dinosaur. It’s a shark. And I can say with a great deal of certainty that sometime in the 2040s we’ll see an article on Slashdot celebrating 50 years of Java. I just hope I’m there to see it.

Is Java dead? (via CodeMonkeyism)

Written on September 21, 2009 by Stephan Schmidt

Is Java dead?

var dzone_url = ‘http://codemonkeyism.com/java-dead/’;

–>

Is Java finally dead? There has been much discussion about the end of Java. As a developer, do you need to care? How do you need to change your decisions in the case that Java is dead? I have pounding this question for the last several years, beginning with my adventures into Ruby at the end of the 90s. I hope to give a thorough representation of my thoughts here.

In a very interesting thread on LtU Sean McDirmid wrote:

The Java death watch continues. Its future is tied up with Sun, which continues not to make money, and in this economy… JavaFX was late and didn’t make the splash it needed to make. Can Scala (or Clojure I guess) save the JVM? And who would take over the Java mantle if Sun imploded, IBM?

while Ross Smith is adding:

I think Sun will be widely recognised as doomed, if it isn’t already dead, by the end of 2009, and they’ll take Java (and the JVM) down with them.

A lot has happened since then: Orcale is buying Sun, the JRuby team has jumped ship to Engine Yard. 2009 has not yet ended, we will see if that prediction holds true.

Searching for java is dead with Google, one gets

Results 1 – 10 of about 8,620,000 for java is dead.

Dead indeed. Or at least lots of people think it is or will die 2009.

For a start we first need to explore what “dead” means, and in particular what dead means for Java. What dead means to you as a developer. After that I will look into the potential successors and why they are better than Java – or not. Looking into the question “why should Java die” I want to make some prediction about Javas future and especially about some future Java programming style.

What does dead mean?

Let’s begin with some thoughts on what Java means. . Most people mean different things when they talk about Java. There are mainly three parts:

  • Java, the language
  • Java, the libraries (JDK)
  • Java, the virtual machine

So does “Java is dead” mean the language, the libraries or the virtual machine? Contrary to the commentors on Lambda the Ultimate the Java VM is safe. There are considerable efforts to open source the virtual machine beside the language. Indeed with the beginning of the Java language summit it looks stronger than before. Should Sun as a company die, Oracle drop Java or stop development on the VM, most probably some other players with their VM implementations or the OpenJDK community would jump in.

The VM as a platform has grown enormously in 2008 and 2009. Lots of people talk about JRuby as Rails for the enterprise – Engine Yards has pledged support. Scala is an object-functional language on the VM with a strong following and a lot of momentum in 2009. Both Scala and JRuby are established on the JVM, but there are newcomers. Clojure stirred up the Lisp community and the Java community in 2008 and made a lot of buzz in 2009. Just in time for christmas last year Ola Bini released Ioke, what he described as a mixture of Smalltalk, Ruby and Lisp. It looks like a more dynamic Ruby to me after some hours of playing around with it. Great feat. And recently Noop has been released.

Or does “Java is dead” mean the language? What does it mean to be dead for a programming language? Perhaps that it is no longer the default choice for projects? Default choice for what projects? It is obviously not any longer the default choice for web-sites and web startups. For some years this has been Rails, and with good reasons. Though I think a Wicket/WebBeans/Seam/JPA stack is as fast for development as Rails, Rails is a good choice for rapid development for a VC demo. The problems are down the road some years – or so I hear form some CTOs – and Grails might be a safer choice with the easy possibility to go to Java for your stable layer later.

The only large – and lets say profitable and growing – startup that uses Java is LinkedIn. Although some internal systems at FaceBook (Cassandra) and other sites run Java in their core, Twitter runs parts of it’s services in Scala. They show that it can be done. Contrary the German LinkedIn competitor XING is written in Rails.

With Rails and Python moving into the Enterprise, is Java no longer the default choice for new projects there? Not that I know of. Perhaps some grass root projects go with Rails, the default choice still is Java, C or C# depending on your enviroment. Beside some funny view on enterprise applications:

It’s been 10 years and there are still no compelling client side or desktop apps in Java and all the compelling server apps (sorry enterprise apps don’t count as compelling!) are done in PHP, Python, Ruby, Perl, Smalltalk et al.

I can’t see companies move their programmers and default choice to Ruby, Erlang, Python, Lisp or OCaml. As this would mean polyglott programming and as Alex Ruiz writes:

I haven’t seen any practical evidence yet to convince me this is a good idea.

For you as a developer, does dead mean you can’t get any more jobs in Java development? Looking at Dice

shows that Java jobs are still high, with a significant increase in 2008. The German news website Heise News showed the same for project work, a more than 89% increase since the beginning of 2007:

203 in Q1 2007

384 in Q3 2008

Is Java dead because other languages are better?

With a different angle we can discuss the death of Java in the view of it’s potential successors. As a matter of fact a language cannot die without successors, otherwise noone could develop any software. People suggest a lot of successors, some of them are:

  • Ruby
  • Python
  • Groovy/Grails
  • Scala
  • Fan
  • Erlang
  • OCaml
  • Ioke
  • Factor

Not all of them – although excellent and interesting languages – share the same goals as Java and fit into the same place. Ruby and Python seem currently not enterprise ready, mostly because of tools, skills and deployments. This might change in the future, we’re not there yet. OCaml and Factor are interesting and capable, but too far away from the procedural mainstream that is the C legacy. Most prospects have the JVM languages, Fan, Groovy, Scala, Ioke. Fan doesn’t seem to have succession ambitions, Ioke is specially designed as a testing ground for ideas. Scala and Groovy seem to battle it out as successors. Scala has momentum and hype, companies use it in enterprise environments – and it’s also my current favorite. Groovy looks stronger, it made some inroads silently in the enterprise and with Spring having bought the Grails committers – and now VMWare having bought Spring – it’s better positioned than before.

Those successors need to be better than Java, otherwise it would me a folly to replace Java with high costs and gain nothing. What does better mean?

  • Faster to write?
  • More cost efficient?
  • Higher maintainability, cleaner code?
  • Shorter code?

Most of them are faster to write because they have shorter code. As I’ve shown, Java is 1.7x – 4x bigger than Python in lines of code, but does that mean Java is dead?

Most comparisions take 5 to 10-year-old brownfield, legacy Java projects with hundreds of developers – many of them average – and compare them with 2-year-old Rails projects, where the initial developers – most of them excellent – are still on board. For a real comparison one would need to compare state of the art frameworks, Webbeans/Wicket, Stripes/JPA with rapid development frameworks like Rails and Django. I’ll spare this comparison perhaps for another post in the future, but would be happy if someone does a decent comparison. I consider this question open.

A Java successor needs to go through the enterprise. There is the main beef, the most money and the most developers. To die a language needs to die there. Enterprise software is used for longer periods of time, with many developers working on it. The longer time periods mean higher turn-over during the life-time. Were are the problems in the enterprise and how could successors solve them in better ways?

Enterprise pain points

  • Maintenance
  • Readability
  • Reuse

Do the potential successors solve those pain points better than Java? Partially. Some of them have richer reuse models, some of them have better readability and are less noisy. But I also consider this question open – from my experience with many languages those problems aren’t solved. Perhaps because many language designers today disdain the enterprise. Scala is a sweet spot for me, it gains on those issues but doesn’t introduce new problems.

Goals of Java and does Java no longer meet it’s goals?

What have been the goals of Java? Those are linked intrinsically to the success, so we need to take a look at them, and if those goals no longer represent what people need. Those goals are many, but the main ones seem to be:

  1. Solve problems of C++
  2. Internet capable
  3. Standard library – JDK
  4. Automatic Memory Management – GC
  5. No error prone pointer operations
  6. Enterprise-Ready – a goal that evolved after some time (easy to use, low entry, big departments)
  7. Easy concurrency in the language

I can’t see that those goals are no longer valid, or Java does no longer fulfill them. The goals are valid, and fulfilled. Only concurrency is the item which is highly discussed and can be an issue. Concurrency is the future. Concurrency can be an issue as the early lock and synchronize system of Java proofed to be too difficult. The new trend is multi-core. Is Java unfit for massive multi-core machines? Java in later editions added easier concurrency with concurrent lists, queues and fork and join and is fit for multi-core machines. No worries at least for me that Java misses this trend.

One requirement to a language wasn’t seen as important in 1995 as it is today: Rapid development and rapid turnaround. Java still falls flat, even with JRebel which allows seamless reloading of classes, RAD web frameworks like Wicket and splendid IDEs. Rails, Django and PHP are better and have a faster turn around. Period. Java is lacking here, and reloading changes look to be the biggest problem with Java development today. Maven deployments are a pain after you’ve worked with Rails or PHP..

Faster turnaround has higher productivity. Which means more money. If Java doesn’t solve this – Java might be on the way to extinction.

Why should it die, what should we learn?

Java might die, because the drawbacks beside turnaround have gotten too big. Lots of concepts have been proven to be bad ideas.

  • Inheritance: outside of frameworks, inheritance is inflexible, leads to tight coupling and is plain bad. Composition is most often a better choice. As are mixins and traits
  • Noisy syntax: Lately there has been the enlightenment that too much noise in a language is a bad thing. Java is especially noisy in closures (anonymous inner classes) and generics.
  • Null / NPE: Null as the default for object references was a billion dollar mistake. An object should by default need a value. Otherwise NPEs will proliferate through your code. Newer languages prevent nulls or make the null behavior the non default one
  • Design patterns: Many design patterns are a good thing, but some of them are just covering inefficiencies in an only-OO language like Java
  • List processing: As shown by functional languages, list processing should not be done in loops. Many operations in applications are just that: get a list, transform the list, filter the list and return a list. Javas new for loop is better than the old – but solves the wrong problem. Java should have native support for easy list processing, not via the – best we have – constructs in Google Collections.

Those are valid concerns and one wishes Java would die for those. But the Java community is working on fixes – although as can be seen with the discussion on Closures in Java 7 sometimes too slow. I consider those problems painful, but not big enough that they will lead to Javas imminent death. They could lead to a death by thousand cuts though.

Java Future and what does this mean for you

From what I’ve written  I come to the conclusion that Java is not dead. It’s not fundamentally flawed, it still meets it’s goal, there is interest in Java, no really clear successor has emerged, the platform evolves, the JVM shines, new languages flourish and new projects are started in Java.

But just because Java is not dead doesn’t mean it has a future. Developers need to open their eyes and learn new languages. I’m really disappointed in interviews when candidates show no interest in programming beside Java. So for you as a developer: no worries. As a student: You still need to learn Java to have a high probability to get a job – with the conditions you like. For you as a manager or CTO: have a plan ready for when the Java era ends.

It’s too early for a requiem. But if Java dies, what can we learn? Before and foremost one needs to learn from Javas success and eventual decline. The points I’ve written about, wrong concepts, enterprise pain points and what Java did right need to be remembered.

Is Java dead because no-one talks about it anymore?

Thanks for bearing with me through this long post and we now come to an end. Jitter about Java has significantly gone down. My blogging on Java has gone done. My twittering on Java has gone down. Some years ago everyone was talking about Java, now it’s mainly enthusiasts. Java is a none-hype. It’s not as bad as COBOL, but a lot like C and C++. Is a language dead when none talks about it anymore? You decide. In the end the only question that really matters: Is Java dead for me? Would I start a project in Java? I would have in 2008. Would I in 2009? Probably not, I’d use Scala.

You can leave a Reply here.
Of course, you should follow me on twitter here.

Interesting thing to ponder is Java as a language vs. Java as a platform. Java as a platform isn’t going anywhere, and the fact that so many more “modern” (funny to think of Java as not modern now …) languages can be run on the JVM shows that there’s value in the platform.

I also think there’s still a lot of value in the language and when you look at some of the alternatives, I think we’ll see Java as a language around for a long time to come. Nothing else fits in the space Java does quite as well.

Pigeon Turns Out to be Faster Than S. African Net

inject_hotmail.com writes “The results are in: it’s faster to send your data via an airborne carrier than it is through the pipes. As discussed Tuesday, a company in South Africa called Unlimited IT, frustrated by terribly slow Internet speeds, decided to prove their point by sending an actual homing pigeon with a “data card” strapped to its leg from one of their offices to another while at the same time uploading the same amount of data to the same destination via their ISPs data lines. The media outlet reporting this triumph said that it took the pigeon just over 1 hour to make the 80km/50mile flight, whereas it took over 2 hours to transfer just 4% of that data.”

*

Reminds me of the old “never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway” quote.