Category Archives: java

image

Fit for business? Google updates App Engine with the Enterprise in mind

Google has updated App Engine to 1.4.3. The new version adds:

Prospective Search API for Python – this lets you register a large set of queries which are executed against a flow of data so you can create notifications or other actions whenever a match is found.

Testbed Unit Test Framework for Python – this lets you create stubs for Google services for lightweight unit tests.

Concurrent requests for Java – a single application instance can now serve multiple requests provided it is marked threadsafe. An important feature.

Java Remote API – the remote API lets you access an App Engine datastore from your local machine.

I have had the sense that Google App Engine is more attractive to start-ups and small organisations than to enterprise customers. It is interesting to see Google working on bringing the Java and Python runtimes closer to parity, as Java is more widely used for enterprise development.

Another initiative aimed at enterprise customers is App Engine for Business, currently in preview. What you get is:

An Enterprise Administration Console console for managing all apps built by your company, with access control lists.

99.9% service level agreement

Hosted SQL:

While many applications can be built on the App Engine Datastore (which uses Google’s BigTable database system), we know SQL is the industry standard for the enterprise, so we’ve got you covered. SQL database support on App Engine gives enterprise developers access to the full capabilities of a dedicated relational database, without the headache of managing it.

SSL to an URL that uses your domain, such as https://myapp.apps.example.com.

Pricing – $8 per user up to a maximum of $1000 per month. In other words, if you have more than 125 users the cost per user starts coming down; if you have 1000 users it is a bargain.

Has Google done enough to make App Engine attractive to enterprise customers? This post from a frustrated developer back in November 2010 complained about stability issues and other annoyances that do not really exist on Amazon or Microsoft Azure; the Salesforce.com platform does have some throttling limitations. But it does seem that Google is determined to address the issues and App Engine for Business looks promising.

RIM announces Java and Android runtimes for the Playbook, beta of native SDK

RIM has announced several new options for developing apps for its PlayBook tablet.

RIM will launch two optional “app players” that provide an application run-time environment for BlackBerry Java® apps and Android v2.3 apps. These new app players will allow users to download BlackBerry Java apps and Android apps from BlackBerry App World and run them on their BlackBerry PlayBook.

In addition, RIM will shortly release the native SDK for the BlackBerry PlayBook enabling C/C++ application development on the BlackBerry® Tablet OS. For game-specific developers, RIM is also announcing that it has gained support from two leading game development tooling companies, allowing developers to use the cross-platform game engines from Ideaworks Labs and Unity Technologies to bring their games to the BlackBerry PlayBook.

It sounds as if the Android runtime will not be perfectly compatible with real Android:

Developers currently building for the BlackBerry or Android platforms will be able to quickly and easily port their apps to run on the BlackBerry Tablet OS thanks to a high degree of API compatibility.

Nevertheless, this will be an attractive route for Android developers looking for a quick way to port to the Blackberry.

The native SDK is currently in “limited alpha release” but RIM is promising an open beta for this summer.

The BlackBerry Tablet OS NDK will allow developers to build high-performance, multi-threaded, native C/C++ applications with industry standard GNU toolchains. Developers can create advanced 2D and 3D applications and special effects by leveraging programmable shaders available in hardware-accelerated OpenGL ES 2.0.

The deal with Unity is important too. Unity is an increasingly popular toolkit for game development and adding the Blackberry to the list of supported platforms will boost its appeal. Ideaworks Labs makes the Airplay SDK, a cross-platform toolkit which already supports Apple iOS, Android, Symbian, Samsung Bada, HP webOS and Windows Mobile.

Note that the primary SDK for the Playbook has until now been Adobe AIR; and since the UI itself uses the Flash runtime this likely still makes sense for many applications.

RIM is doing a good job of opening up its platform. It is an interesting contrast to Microsoft’s “Silverlight, XNA or nothing” approach for Windows Phone.

Computer book stats show resilience of Java as Android booms

Mike Hendrickson at O’Reilly has posted four articles analysing the state of the computer book market in more detail than most of us care about.  The overall picture is not too good – sales are down – and there are some interesting trends.

Here is a good one for anyone who thinks Java is dying. The programming languages post shows that unit sales of books on Java increased by 17.2% in 2010 vs 2009, whereas the next most popular language, C#, declined by 1.7%. Objective C, in third place, also declined slightly. JavaScript unit sales were up by 14.5%.

Why is Java booming? There is a clue in one of the two bestselling Java titles mentioned by Hendrickson: Professional Android 2 Application Development

Another trend that caught my eye is in the first post. Some of the Down categories surprised me:

Adobe Flash –84.43%

Mac OS –32.12%

Web Design Tools –53.2%

Adobe’s Creative Suite 5 has sold well as far as I’m aware so although books on Flash and Dreamweaver have not been selling well, it is dangerous to draw obvious conclusions.

The influence of Android is unmistakeable though. Something for Oracle to consider as it pursues Google for breach of intellectual property.

Amazon’s Elastic Beanstalk auto-scales your cloud application

Amazon has announced Elastic Beanstalk, which lets you deploy an application to Amazon’s EC2 (Elastic Compute Cloud) and have it scale up or down, by launching or terminating server instances, according to demand. There is no additional cost for using Elastic Beanstalk; you are charged for the instances you use.

Here is a dialog from the control console that says a lot about how the new service works:

image

As you can see, you can specify both a minimum and a maximum instance count, where the number is between 1 and 10,000. You can also control the “Trigger”, the metric that makes Elastic Beanstalk create or terminate instances.

Currently Elastic Beanstalk is for Java applications running on the Apache Tomcat application server, on a standard Amazon Linux virtual machine. However, the following comment in the FAQ indicates that Amazon is investigating other platforms:

Yes. Elastic Beanstalk is designed so that it can be extended to support multiple development stacks and programming languages in the future.

The innovation here is not so much in the technology, which stiches together a number of existing services, but rather in how easy and cheap it is to get started. The cost of entry is almost nothing; in fact, Amazon says you can run Elastic Beanstalk on its free usage tier, for a low-use application. Even I you expect it to remain low-use Elastic Beanstalk provides some other useful features like health monitoring.

It seems to me that this new service is cloud deployment as it should be: removing the administrative burden of scaling your application according to demand. Other platforms like Google App Engine also do this, but with more restrictions on how you design your application. Platforms like Microsoft Windows Azure let you scale your application, but you have to log into the console and spin instances up or down yourself.

One final observation: despite considerable unhappiness in the Java community about the way Oracle is managing the platform, there are still excellent reasons to use it, and Amazon has just provided one more.

Adobe AIR is user-hostile compared to native apps says BankSimple CTO

Alex Payne, CTO at BankSimple, has written an analysis of Adobe AIR from the user’s perspective. The scenario: his team was looking for a an alternative to Campfire for group chat, and selected HipChat. They liked the features of HipChat, but not the desktop app, which is built using Adobe AIR:

My team experienced a number of the usual problems one has with AIR applications: lousy performance, odd interface bugs, key combinations and UI elements that didn’t conform to our operating system. AIR apps exist in an uncanny valley between a web application and a desktop application, and the result is unsettling and annoying. Pretty soon, we were itching to go back to Campfire (via the native Mac client Propane), even though HipChat has better features and the promise of improved reliability.

Payne investigated further and came to the conclusion that users prefer native apps; and that cross-platform toolkits are for the benefit of software companies not users. Echoes of Steve Jobs’ Thoughts on Flash:

Flash is a cross platform development tool. It is not Adobe’s goal to help developers write the best iPhone, iPod and iPad apps. It is their goal to help developers write cross platform apps.

And lest you think this is bad for AIR but good for Java, note that Payne adds:

For anyone who used a computer in the 1990s, AIR probably brings back scarring memories of Java apps: slow, ugly, inconsistent, awkward.

I was also reminded of Evernote’s experience with .NET versus native code, which I blogged here.

Payne is not all wrong, neither is Jobs. That said, the distinction between what is good for users and what is good for developers is not absolute. Maintaining a single cross-platform code-base, for example, is good for both users and developers, because it reduces bugs and assists feature-compatibility across platforms. It is also good for users of minority platforms who might otherwise have nothing.

Another question: how many of the issues Payne identifies are inherent to using AIR (or another cross-platform runtime), and how many are implementation issues? It is impossible to know without drilling into the details; but I don’t believe that all AIR (or Java, or .NET) apps have “lousy performance”.

It is true that ActionScript code is slower than Java or .NET code, and much slower than compiled C/C++, but speed of script execution is not always the performance bottleneck that users will notice most.

This is seemingly one of those never-ending computing debates; but a post like Payne’s is a reminder that neither Adobe AIR, nor any cross-platform runtime, is a perfect solution to the challenge of multiple client platforms.

Google flexes its Chrome browser muscles, removes support for H.264 video – but what about Adobe Flash?

Google has announced that it will remove support for the H.264 video codec in its Chrome browser:

…we are changing Chrome’s HTML5 <video> support to make it consistent with the codecs already supported by the open Chromium project. Specifically, we are supporting the WebM (VP8) and Theora video codecs, and will consider adding support for other high-quality open codecs in the future. Though H.264 plays an important role in video, as our goal is to enable open innovation, support for the codec will be removed and our resources directed towards completely open codec technologies.

The reason given is that Google wishes to support open standards. That sounds good for open standards, but not so good for users who simply want a video to play.

Google’s position contrasts that of Microsoft with IE9:

In its HTML5 support, IE9 will support playback of H.264 video as well as VP8 video when the user has installed a VP8 codec on Windows

Still, at least IE9 will play VP8 if the codec is installed, so that makes VP8 look a better option for content providers – which is the outcome Google is hoping for.

I have mixed feelings about this approach, because while it is good for open standards it is bad for compatibility. I am also not sure that it is consistent. Google announced in June that it is integrating Adobe Flash support into the browser; yet Flash is not an open standard.

That also suggests that H.264 video will still play in Chrome, provided it is in a Flash wrapper.

Maybe Google is learning from Apple how to deprecate technologies by removing support. Apple refuses to allow Java or Flash on iOS, and has stopped doing its own build of Java for OS X. Apple has also stated that these “optional” components may not be used in apps that are deployed in the Mac App Store, thus making a disincentive for developers considering those runtimes.

Apple has not squashed Flash though; and Google may find it equally hard to squash H.264, which is widely supported throughout the industry, has the best tools, and for which hardware is optimised. Apple supports H.264 but is unlikely to support WebM or Theora any time soon. Here’s what Apple CEO Steve Jobs said in April 2010:

To achieve long battery life when playing video, mobile devices must decode the video in hardware; decoding it in software uses too much power. Many of the chips used in modern mobile devices contain a decoder called H.264 – an industry standard that is used in every Blu-ray DVD player and has been adopted by Apple, Google (YouTube), Vimeo, Netflix and many other companies.

Although Flash has recently added support for H.264, the video on almost all Flash websites currently requires an older generation decoder that is not implemented in mobile chips and must be run in software. The difference is striking: on an iPhone, for example, H.264 videos play for up to 10 hours, while videos decoded in software play for less than 5 hours before the battery is fully drained.

When websites re-encode their videos using H.264, they can offer them without using Flash at all. They play perfectly in browsers like Apple’s Safari and Google’s Chrome without any plugins whatsoever, and look great on iPhones, iPods and iPads.

It seems Jobs spoke too soon when he said H.264 would play perfectly in Chrome.

Post updated to add Apple quote

No Java or Adobe AIR apps in Apple’s Mac App Store

Apple’s App Store Review Guidelines appear to forbid Java or Adobe AIR applications from being published in the store:

Apps that use deprecated or optionally installed technologies (e.g., Java, [PowerPC code requiring] Rosetta) will be rejected.

Since Adobe AIR is not shipped by default with OS X, any applications requiring that runtime will not qualify. Java is forbidden because Apple has deprecated its own build of Java; and while it seems supportive of Oracle’s official OpenJDK project for Mac OS X, apparently that support does not extend to allowing Java apps into the store.

Of course it is not only Java and Adobe AIR that are affected, but any apps that need a runtime.

There are many other provisions, most of which seem sensible in order to protect the user’s experience with the App Store. Some of them have potential for causing controversy:

Apps that duplicate apps already in the App Store may be rejected, particularly if there are many of them. Apps that are not very useful or do not provide any lasting entertainment value may be rejected.

What defines duplication in this context? How will Apple test whether an app has “lasting entertainment value” – I presume this refers to games.

The situation on Mac OS X is different than on the iPhone or iPad, since users can easily install apps via other routes. That said, if the App Store catches on then not being included may become a significant disadvantage. Further, it will not surprise me if Apple starts hinting that non-approved apps carry more risk to the user, so that some users might decide to avoid anything without this official stamp of approval.

I wonder if Adobe will do a Flash packager for the Mac similar to that which it offers for iOS, to get round these restrictions?

Ten big tech trends from 2010

This was an amazing year for tech. Here are some of the things that struck me as significant.

Sun Java became Oracle Java

Oracle acquired Sun and set about imposing its authority on Java. Java is still Java, but Oracle lacks Sun’s commitment to open source and community – though even in Sun days there was tension in this area. That was nothing to the fireworks we saw in 2010, with Java Community Process members resigning, IBM switching from its commitment to the Apache Harmony project to the official OpenJDK, and the Apache foundation waging a war of words against Oracle that was impassioned but, it seems, futile.

Microsoft got cloud religion

Only up to a point, of course. This is the Windows and Office company, after all. However – and this is a little subjective – this was the year when Microsoft convinced me it is serious about Windows Azure for hosting our applications and data. In addition, it seems to me that the company is willing to upset its partners if necessary for the sake of its hosted Exchange and SharePoint – BPOS (Business Productivity Online Suite), soon to become Office 365.

This is a profound change for Microsoft, bearing in mind its business model. I spoke to a few partners when researching this article for the Register and was interested by the level of unease that was expressed.

Microsoft also announced some impressive customer wins for BPOS, especially in government, though the price the customers pay for these is never mentioned in the press releases.

Microsoft Silverlight shrank towards Windows-only

Silverlight is Microsoft’s browser plug-in which delivers multimedia and the .NET Framework to Windows and Mac; it is also the development platform for Windows Phone 7. It still works on a Mac, but in 2010 Microsoft made it clear that cross-platform Silverlight is no longer its strategy (if it ever was), and undermined the Mac version by adding Windows-specific features that interoperate with the local operating system. Silverlight is still an excellent runtime, powerful, relatively lightweight, easy to deploy, and supported by strong tools in Visual Studio 2010. If you have users who do not run Windows though, it now looks a brave choice.

The Apple iPad was a hit

I still have to pinch myself when thinking about how Microsoft now needs to catch up with Apple in tablet computing. I got my first tablet in 2003, yes seven years ago, and it ran Windows. Now despite seven years of product refinement it is obvious that Windows tablets miss the mark that Apple has hit with its first attempt – though drawing heavily on what it learnt with the equally successful iPhone. I see iPads all over the place, in business as well as elsewhere, and it seems to me that the success of a touch interface on this larger screen signifies a transition in personal computing that will have a big impact.

Google Android was a hit

Just when Apple seemed to have the future of mobile computing in its hands, Google’s Android alternative took off, benefiting from mass adoption by everyone-but-Apple among hardware manufacturers. Android is not as elegantly designed or as usable as Apple’s iOS, but it is close enough; and it is a relatively open platform that runs Adobe Flash and other apps that do not meet Apple’s approval. There are other contenders: Microsoft Windows Phone 7; RIM’s QNX-based OS in the PlayBook; HP’s Palm WebOS; Nokia Symbian and Intel/Nokia MeeGo – but how many mobile operating systems can succeed? Right now, all we can safely say is that Apple has real competition from Android.

HP fell out with Microsoft

Here is an interesting one. The year kicked off with a press release announcing that HP and Microsoft love each other to the extent of $250 million over three years – but if you looked closely, that turned out to be less than a similar deal in 2006. After that, the signs were even less friendly. HP acquired Palm in April, signalling its intent to compete with Windows Mobile rather than adopting it; and later this year HP announced that it was discontinuing its Windows Home Server range. Of course HP remains a strong partner for Windows servers, desktops and laptops; but these are obvious signs of strain.

The truth though is that these two companies need one another. I think they should kiss and make up.

eBook readers were a hit

I guess this is less developer-oriented; but 2010 was the year when electronic book publishing seemed to hit the mainstream. Like any book lover I have mixed feelings about this and its implications for bookshops. I doubt we will see books disappear to the same extent as records and CDs; but I do think that book downloads will grow rapidly over the next few years and that paper-and-ink sales will diminish. It is a fascinating tech battle too: Amazon Kindle vs Apple iPad vs the rest (Sony Reader, Barnes and Noble Nook, and others which share their EPUB format). I have a suspicion that converged devices like the iPad may win this one, but displays that are readable in sunlight have special requirements so I am not sure.

HTML 5 got real

2010 was a huge year for HTML 5 – partly because Microsoft announced its support in Internet Explorer 9, currently in beta; and partly because the continued growth of browsers such as Mozilla Firefox, and the WebKit-based Google Chrome, Apple Safari and numerous mobile browsers showed that HTML 5 would be an important platform with or without Microsoft. Yes, it is fragmented and unfinished; but more and more of HTML 5 is usable now or in the near future.

Adobe Flash survived Apple and HTML 5

2010 was the year of Steve Jobs’ notorious Thoughts on Flash as well as a big year for HTML 5, which encroaches on territory that used to require the services of a browser plug-in. Many people declared Adobe Flash dead, but the reality was different and the company had a great year. Apple’s focus on design and usability helps Adobe’s design-centric approach even while Apple’s refusal to allow Flash on its mobile computers opposes it.

Windows 7 was a hit

Huge relief in Redmond as Windows 7 sold and sold. The future belongs to mobile and cloud; but Windows is not going away soon, and version 7 is driving lots of upgrades as even XP diehards move over. I’m guessing that we will get first sight of Windows 8 in 2011. Another triumph, or another Vista?

First impressions of Google TV – get an Apple iPad instead?

I received a Google TV as an attendee at the Adobe MAX conference earlier this year; to be exact, a Logitech Revue. It is not yet available or customised for the UK, but with its universal power supply and standard HDMI connections it works OK, with some caveats.

The main snag with my evaluation is that I use a TV with built-in Freeview (over-the-air digital TV) and do not use a set top box. This is bad for Google TV, since it wants to sit between your set top box and your TV, with an HDMI in for the set top box and an HDMI out to your screen. Features like picture-in-picture, TV search, and the ability to choose a TV channel from within Google TV, depend on this. Without a set-top box you can only use Google TV for the web and apps.

image

I found myself comparing Google TV to Windows Media Center, which I have used extensively both directly attached to a TV, and over the network via Xbox 360. Windows Media Center gets round the set top box problem by having its own TV card. I actually like Windows Media Center a lot, though we had occasional glitches. If you have a PC connected directly, of course this also gives you the web on your TV. Sony’s PlayStation 3 also has a web browser with Adobe Flash support, as does Nintendo Wii though it is more basic.

image

What you get with Google TV is a small set top box – in my case it slipped unobtrusively onto a shelf below the TV, a wireless keyboard, an HDMI connector, and an IR blaster. Installation is straightforward and the box recognised my TV to the extent that it can turn it on and off via the keyboard. The IR blaster lets you position an infra-red transmitter optimally for any IR devices you want to control from Google TV – typically your set-top box.

I connected to the network through wi-fi initially, but for some reason this was glitchy and would lose the connection for no apparent reason. I plugged in an ethernet cable and all was well. This problem may be unique to my set-up, or something that gets a firmware fix, so no big deal.

There is a usability issue with the keyboard. This has a trackpad which operates a mouse pointer, under which are cursor keys and an OK button. You would think that the OK button represents a mouse click, but it does not. The mouse click button is at top left on the keyboard. Once I discovered this, the web browser (Chrome, of course) worked better. You do need the OK button for navigating the Google TV menus.

I also dislike having a keyboard floating around in the living room, though it can be useful especially for things like Gmail, Twitter or web forums on your TV. Another option is to control it from a mobile app on an Android smartphone.

The good news is that Google TV is excellent for playing web video on your TV. YouTube has a special “leanback” mode, optimised for viewing from a distance that works reasonably well, though amateur videos that look tolerable in a small frame in a web browser look terrible played full-screen in the living room. BBC iPlayer works well in on-demand mode; the download player would not install. Overall it was a bit better than the PS3, which is also pretty good for web video, but probably not by enough to justify the cost if you already have a PS3.

The bad news is that the rest of the Web on Google TV is disappointing. Fonts are blurry, and the resolution necessary to make a web page viewable from 12 feet back is often annoying. Flash works well, but Java seems to be absent.

Google also needs to put more thought into personalisation. The box encouraged me to set up a Google account, which will be necessary to purchase apps, giving me access to Gmail and so on; and I also set up the Twitter app. But typically the living room is a shared space: do you want, for example, a babysitter to have access to your Gmail and Twitter accounts? It needs some sort of profile management and log-in.

In general, the web experience you get by bringing your own laptop, netbook or iPad into the room is better than Google TV in most ways apart from web video. An iPad is similar in size to the Google TV keyboard.

Media on Google TV has potential, but is currently limited by the apps on offer. Logitech Media Player is supplied and is a DLNA client, so if you are lucky you will be able to play audio and video from something like a NAS (network attached storage) drive on your network. Codec support is limited.

In a sane, standardised world you would be able to stream music from Apple iTunes or a Squeezebox server to Google TV but we are not there yet.

One key feature of Google TV is for purchasing streamed videos from Netflix, Amazon VOD (Video on Demand) or Dish Network. I did not try this; they do not work yet in the UK. Reports are reasonably positive; but I do not think this is a big selling point since similar services are available by many other routes. 

Google TV is not in itself a DVR (Digital Video Recorder) but can control one.

All about the apps

Not too good so far then; but at some point you will be able to purchase apps from the Android marketplace – which is why attendees at the Adobe conference were given boxes. Nobody really knows what sort of impact apps for TV could have, and it seems to me that as a means of running apps – especially games – on a TV this unobtrusive device is promising.

Note that some TVs will come with Google TV built-in, solving the set top box issue, and if Google can make this a popular option it would have significant impact.

It is too early then to write it off; but it is a shame that Google has not learned the lesson of Apple, which is not to release a product until it is really ready.

Update: for the user’s perspective there is a mammoth thread on avsforum; I liked this post.