{"id":1332,"date":"2009-04-15T17:50:11","date_gmt":"2009-04-15T16:50:11","guid":{"rendered":"http:\/\/www.itwriting.com\/blog\/1332-googles-cut-down-java-wanton-and-irresponsible-or-just-necessary.html"},"modified":"2009-04-15T17:50:11","modified_gmt":"2009-04-15T16:50:11","slug":"googles-cut-down-java-wanton-and-irresponsible-or-just-necessary","status":"publish","type":"post","link":"https:\/\/www.itwriting.com\/blog\/1332-googles-cut-down-java-wanton-and-irresponsible-or-just-necessary.html","title":{"rendered":"Google\u2019s cut-down Java: wanton and irresponsible, or just necessary?"},"content":{"rendered":"<p>Sun\u2019s Simon Phipps stirred things up last weekend when he called Google\u2019s actions <a href=\"http:\/\/blogs.sun.com\/webmink\/entry\/lump_of_links_for_april\" target=\"_blank\">wanton and irresponsible<\/a>. Its crime: delivering a cut-down Java library for use on its App Engine platform, \u201cflaunting the rules\u201d which forbid creating sub-sets of the core classes.<\/p>\n<p>It does sound as if Google is not talking to Sun as much as it might. Still, let\u2019s note that Google has good reason to omit certain classes or methods. App Engine is a distributed, shared environment; this mean that some things make no sense &#8211; for example: writing to a local file \u2013 and other things may be unacceptable, such as grabbing a large slice of CPU time for an extended period.<\/p>\n<p>Salesforce.com addressed this same issue by inventing a new language, called <a href=\"http:\/\/wiki.developerforce.com\/index.php\/Apex\" target=\"_blank\">Apex<\/a>. It\u2019s Java-like, but not Java. The company therefore avoided accusations of creating an incompatible Java, and conveniently ensured that Apex code would run only on Force.com, at least until someone attempts to clone it.<\/p>\n<p>Google\u2019s approach was to use Java, but leave a few things out. <a href=\"http:\/\/code.google.com\/appengine\/kb\/java.html#frameworks\" target=\"_blank\">This FAQ<\/a> gives an overview; and the article <a href=\"http:\/\/groups.google.com\/group\/google-appengine-java\/web\/will-it-play-in-app-engine\" target=\"_blank\">Will it play in App Engine<\/a> lists common frameworks and libraries with notes on whether they work. Given that languages like JRuby, Groovy and Rhino work fine, it\u2019s clear that core App Engine Java is not too badly damaged. The big omissions are JDBC (because you are meant to use the App Engine datastore, which is not relational), and Enterprisey things like JMS, EJB and JNDI. Google is nudging, or shoving, developers towards RESTful APIs along with its built-in services.<\/p>\n<p>Will you be able to escape App Engine if you have a change of heart after deployment? I\u2019d guess that porting the code will not be all that hard. Perhaps the biggest lock-in is with identity; you could roll your own I guess, but Google intends you to use Google accounts and supplies a <a href=\"http:\/\/code.google.com\/appengine\/docs\/java\/users\/overview.html\" target=\"_blank\">Java API<\/a>. Microsoft is ahead of Google here since it does support federated identity, if you can get your head round it: you can authenticate users in the Microsoft cloud against your own directory using <a href=\"http:\/\/msdn.microsoft.com\/en-us\/security\/aa570351.aspx\" target=\"_blank\">Geneva<\/a>. The best Google can offer is <a href=\"http:\/\/www.google.com\/support\/a\/bin\/answer.py?&amp;answer=106368\" target=\"_blank\">Directory Sync<\/a>; though even that is some protection from identity lock-in.<\/p>\n<p>Java support on App Engine is actually a vote of confidence in Java; if what is good for Java is good for Sun, then Sun is a winner here. That said, just where is the benefit for Sun if companies host Java applications, built with <a href=\"http:\/\/www.eclipse.org\" target=\"_blank\">Eclipse<\/a>, on Google\u2019s platform? Not much that I can see.<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4d998ab2-d893-4dd9-a182-d794dad53e27\" class=\"wlWriterEditableSmartContent\">Technorati Tags: <a href=\"http:\/\/technorati.com\/tags\/sun\" rel=\"tag\">sun<\/a>,<a href=\"http:\/\/technorati.com\/tags\/java\" rel=\"tag\">java<\/a>,<a href=\"http:\/\/technorati.com\/tags\/google\" rel=\"tag\">google<\/a>,<a href=\"http:\/\/technorati.com\/tags\/app+engine\" rel=\"tag\">app engine<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Sun\u2019s Simon Phipps stirred things up last weekend when he called Google\u2019s actions wanton and irresponsible. Its crime: delivering a cut-down Java library for use on its App Engine platform, \u201cflaunting the rules\u201d which forbid creating sub-sets of the core classes. It does sound as if Google is not talking to Sun as much as &hellip; <a href=\"https:\/\/www.itwriting.com\/blog\/1332-googles-cut-down-java-wanton-and-irresponsible-or-just-necessary.html\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Google\u2019s cut-down Java: wanton and irresponsible, or just necessary?<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,29,36,49,80,85],"tags":[],"class_list":["post-1332","post","type-post","status-publish","format-standard","hentry","category-cloud-computing","category-eclipse","category-google","category-java","category-software-development","category-sun"],"_links":{"self":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts\/1332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/comments?post=1332"}],"version-history":[{"count":0,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts\/1332\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/media?parent=1332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/categories?post=1332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/tags?post=1332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}