{"id":285,"date":"2009-04-08T21:05:00","date_gmt":"2009-04-08T21:05:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=285"},"modified":"2009-04-08T21:05:00","modified_gmt":"2009-04-08T21:05:00","slug":"google-app-engine-unterstutzt-java","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2009\/04\/google-app-engine-unterstutzt-java\/","title":{"rendered":"Google App Engine unterst\u00fctzt Java"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Google Plugin for Eclipse\" src=\"http:\/\/code.google.com\/intl\/de\/eclipse\/images\/google-plugin.png\" align=\"right\" width=\"100\" height=\"100\" \/>Nach Python unterst\u00fctzt die GAP nun auch Java 6. Allerdings gibt es auch einige Besonderheiten:<\/p>\n<ul>\n<li>Kein Dateisystem (somit keine sinnvollen java.io.File-Operationen), da Zugriff \u00fcber den App Engine Datastore<\/li>\n<li>Keine eigenen Threads<\/li>\n<li>Kein AWT- und Swing-Funktionalit\u00e4t\/Pakete. Dass man kein Fenster aufmachen kann ist klar, aber es k\u00f6nnen auch keine Bilder skaliert werden und einige Web-Frameworks nutzen Swing-Modelle wie TableModel. (F\u00fcr die Bild-Operationen bietet Google eine eigene API: http:\/\/code.google.com\/intl\/de\/appengine\/docs\/java\/images\/overview.html)<\/li>\n<li>Eingeschr\u00e4nktes Reflection<\/li>\n<li>Besonderer Klassenlader<\/li>\n<li>(Nat\u00fcrlich) kein JNI<\/li>\n<li>Nicht unterst\u00fctzte Dinge werfen eine SecurityException<\/li>\n<\/ul>\n<p>Nichts desto trotz laufen auch dyn. Sprachen wie Groovy und JRuby. Und es gibt ein Eclipse-Plugin f\u00fcr das Deployment (<a href=\"http:\/\/code.google.com\/intl\/de\/eclipse\/\">Google Plugin for Eclipse<\/a>). Datenzugriff der AppEngine gibt es mit der API von JPA\/JDO \u00fcber <a title=\"http:\/\/www.datanucleus.org\/products\/accessplatform\/\" href=\"http:\/\/www.datanucleus.org\/products\/accessplatform\/\">http:\/\/www.datanucleus.org\/products\/accessplatform\/<\/a> (fr\u00fcher JPOX), IMHO eine recht unbekannte Implementierung der Standards.<\/p>\n<p><a href=\"http:\/\/2.bp.blogspot.com\/_dLfQMJsmsaI\/SdvwPx8hz5I\/AAAAAAAAACY\/I_DEfn6nQjc\/s1600-h\/ae_gwt_java.png\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/2.bp.blogspot.com\/_dLfQMJsmsaI\/SdvwPx8hz5I\/AAAAAAAAACY\/I_DEfn6nQjc\/s320\/ae_gwt_java.png\" border=\"0\" \/><\/a><\/p>\n<p>Zum Weiterlesen:<\/p>\n<ul>\n<li><a title=\"http:\/\/code.google.com\/intl\/de\/appengine\/docs\/java\/overview.html\" href=\"http:\/\/code.google.com\/intl\/de\/appengine\/docs\/java\/overview.html\">http:\/\/code.google.com\/intl\/de\/appengine\/docs\/java\/overview.html<\/a><\/li>\n<li><a title=\"http:\/\/googleappengine.blogspot.com\/2009\/04\/seriously-this-time-new-language-on-app.html\" href=\"http:\/\/googleappengine.blogspot.com\/2009\/04\/seriously-this-time-new-language-on-app.html\">http:\/\/googleappengine.blogspot.com\/2009\/04\/seriously-this-time-new-language-on-app.html<\/a><\/li>\n<li><a title=\"http:\/\/www.infoq.com\/news\/2009\/04\/gae\" href=\"http:\/\/www.infoq.com\/news\/2009\/04\/gae\">http:\/\/www.infoq.com\/news\/2009\/04\/gae<\/a><\/li>\n<li><a href=\"http:\/\/code.google.com\/intl\/de-DE\/appengine\/docs\/java\/jrewhitelist.html\">http:\/\/code.google.com\/intl\/de-DE\/appengine\/docs\/java\/jrewhitelist.html<\/a><\/li>\n<li><a title=\"http:\/\/paulhammant.com\/blog\/google-app-engine-for-java-with-rich-ruby-clients.html\" href=\"http:\/\/paulhammant.com\/blog\/google-app-engine-for-java-with-rich-ruby-clients.html\">http:\/\/paulhammant.com\/blog\/google-app-engine-for-java-with-rich-ruby-clients.html<\/a><\/li>\n<li><a href=\"http:\/\/www.vineetmanohar.com\/2009\/04\/11\/writing-java-hello-world-for-google-app-engine\/\">http:\/\/www.vineetmanohar.com\/2009\/04\/11\/writing-java-hello-world-for-google-app-engine\/<\/a><\/li>\n<li><a href=\"http:\/\/broadcast.oreilly.com\/2009\/04\/java-for-google-appengine-fina.html\">http:\/\/broadcast.oreilly.com\/2009\/04\/java-for-google-appengine-fina.html<\/a><\/li>\n<li><a href=\"http:\/\/www.theserverside.com\/news\/thread.tss?thread_id=54256\">http:\/\/www.theserverside.com\/news\/thread.tss?thread_id=54256<\/a><\/li>\n<li><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Nach Python unterst\u00fctzt die GAP nun auch Java 6. Allerdings gibt es auch einige Besonderheiten: Kein Dateisystem (somit keine sinnvollen java.io.File-Operationen), da Zugriff \u00fcber den App Engine Datastore Keine eigenen Threads Kein AWT- und Swing-Funktionalit\u00e4t\/Pakete. Dass man kein Fenster aufmachen kann ist klar, aber es k\u00f6nnen auch keine Bilder skaliert werden und einige Web-Frameworks nutzen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[4,15],"tags":[],"class_list":["post-285","post","type-post","status-publish","format-standard","hentry","category-open-source","category-web-frameworks"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=285"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/285\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}