Your Ad Here

Posts Tagged ‘java’

Google AppEngine Now Runs Java in Addition to Python

Tuesday, April 7th, 2009

Google AppEngine now runs Python AND Java

It is still in beta but select developers are being added and developers allowed in will be expanded, I got in as I made the request so it looks like it is still filling up.

Both Java and C# were top requests on AppEngine desired languages/platforms.  They have low level support for specific Google features and infrastructure and wrappers around these features to mimic common java libraries like JPA, JCache and java.net around google urlfetch.  So it is still a bit locked to the platform or changes will need to be made to run on Google AppEngine and other environments.  

Many of the changes made to apps really are due to the scalable nature of the cloud architecture without such things as joins and limits on bulk processing, but in the end these points are really better for scalability from the start.  As for being locked to a platform we are already seeing copies such as AppScale that is an open source implementation of Google AppEngine.  So software architecture, data architecture and how we prepare for the terabytes upon terabytes of shared data in the future might be changing. 

Some unsupported features of major Java libraries…

java.net Features Not Supported

  • The URL Fetch service does not support persistent HTTP connections. When the app accesses response data using the URLConnection object, App Engine calls the URL Fetch service to complete the request. After the response data has been accessed, the request data cannot be modified.
  • The app cannot set explicit connection timeouts for the request.

Unsupported Features of JPA

The following features of the JPA interface are not supported by the App Engine implementation:

  • Owned many-to-many relationships, and unowned relationships. You can implement unowned relationships using explicit Key values, though type checking is not enforced in the API.
  • “Join” queries. You cannot use a field of a child entity in a filter when performing a query on the parent kind. Note that you can test the parent’s relationship field directly in query using a key.
  • Aggregation queries (group by, having, sum, avg, max, min)
  • Polymorphic queries. You cannot perform a query of a class to get instances of a subclass. Each class is represented by a separate entity kind in the datastore.

JCache Features Not Supported

  • The JCache listener API is partially supported for listeners that can execute during the processing of a app’s API call, such as for onPut and onRemove listeners. Listeners that require background processing, like onEvict, are not supported.
  • An app can test whether the cache contains a given key, but it cannot test whether the cache contains a given value (containsValue() is not supported).
  • An app cannot dump the contents of the cache’s keys or values.
  • An app cannot manually reset cache statistics.
  • Asynchronous cache loading is not supported.
  • The put() method does not return the previous known value for a key. It always returns null.

High Level Cloud Provider or Low Level Cloud Provider?

With other cloud providers like Amazon EC2, Mosso, SliceHost and others you can choose your platform.  But Google has an amaxing infrasturcture and taking advantage of BigTable and automatic scaling is nice expecially with a 300MB transfer free quota per app.  There are probably times when each type of provider might be beneficial, lower level like Amazon or higher level like Google AppEngine.

View the announcement here at Google AppEngine Blog which has other great news with the launch:

  • Access to firewalled data: grant policy-controlled access to your data behind the firewall.
  • Cron support: schedule tasks like report generation or DB clean-up at an interval of your choosing.
  • Database import: move GBs of data easily into your App Engine app. Matching export capabilities are coming soon, hopefully within a month.

AppEngine to Support Java, Microsoft Strata to Support .NET in the Cloud

Monday, October 20th, 2008

AppEngine is getting an update to it’s next available language besides Python (my particular favorite) in Java.  Apparently the top candidates were C++, Java and C# support for AppEngine but Java has been added due to the overwhelming library and developer support.

Microsoft also has been playing with entering the cloud with Mesh and now with “Strata”.  This would be a cloud for .NET developers.

There are already cloud providers for .NET mainly in Mosso’s offerings of any language being cloud enabled. But one from Microsoft will probably draw all the .NET developers to it like most Microsoft offerings.

Also, Amazon EC2 recently announced support for MS SQL Server and Windows servers.  So really any platform can also be used in Amazon EC2 in Amazon Machine Images. This took longer to happen due to the licensing per processor and server that most Microsoft software has.

This won’t be changing things much for me in the near term but having more platforms available in the cloud and on cloud systems is the natural progression.  At some point a platform might have advantages in cheaper processing but for now Python with AppEngine is still the best bet.


drawcloud – cloud tracking, service and product development is proudly powered by WordPress
Entries (RSS) and Comments (RSS).
Your Ad Here Your Ad Here