Im Rennen zwischen JDO und JPA kann ich nur den Datanucleus-Postern zustimmen.
Zuallererst und vor allem wissen die Poster von datanucleus, was sie tun. Sie entwickeln schließlich eine persistente Bibliothek und sind mit anderen Datenmodellen als dem relationalen, z. B. Big Table, vertraut. Ich bin mir sicher, dass ein Entwickler für den Ruhezustand hier wäre. Er hätte gesagt: "Alle unsere Annahmen beim Aufbau unserer Kernbibliotheken sind eng an das relationale Modell gekoppelt. Der Ruhezustand ist nicht für GAE optimiert."
Zweitens ist JPA zweifellos weit verbreitet, da es ein bisschen hilfreich ist, Teil des offiziellen Java EE-Stacks zu sein, aber das bedeutet nicht unbedingt, dass es besser ist. Tatsächlich entspricht JDO, wenn Sie darüber lesen, einer höheren Abstraktionsebene als JPA. JPA ist eng mit dem RDBMS-Datenmodell verbunden.
Vom Standpunkt der Programmierung aus ist die Verwendung der JDO-APIs eine viel bessere Option, da Sie konzeptionell viel weniger Kompromisse eingehen. Sie können theoretisch zu einem beliebigen Datenmodell wechseln, sofern der von Ihnen verwendete Anbieter die zugrunde liegende Datenbank unterstützt. (In der Praxis erreichen Sie selten ein so hohes Maß an Transparenz, da Sie Ihre Primärschlüssel für das GAE-Objekt festlegen und sich an einen bestimmten Datenbankanbieter, z. B. Google, binden.) Die Migration ist jedoch immer noch einfacher.
Drittens können Sie Hibernate, Eclipse Link und sogar Spring mit GAE verwenden. Google hat anscheinend große Anstrengungen unternommen, damit Sie die Frameworks verwenden können, auf denen Sie Ihre Anwendungen aufbauen. Die Leute erkennen jedoch, wenn sie ihre GAE-Anwendungen so erstellen, als würden sie auf RDBMS ausgeführt, dass sie langsam sind. Der Frühling auf GAE ist langsam. Sie können Google IO-Videos zu diesem Thema googeln, um festzustellen, ob es wahr ist.
Auch die Einhaltung von Standards ist eine vernünftige Sache, im Prinzip begrüße ich. Auf der anderen Seite führt JPA als Teil des Java EE-Stacks dazu, dass Benutzer manchmal ihre Vorstellung von Optionen verlieren. Wenn Sie so wollen, stellen Sie fest, dass Java Server Faces auch Teil des Java EE-Stacks ist. Und es ist eine unglaublich ordentliche Lösung für die Entwicklung von Web-GUI. Aber warum weichen Menschen, die klügeren Leute, wenn ich so sagen darf, letztendlich von diesem Standard ab und verwenden stattdessen GWT?
Bei alledem muss ich sagen, dass es für JPA eine sehr wichtige Sache gibt. Das ist Guice und seine bequeme Unterstützung für JPA. Scheint, dass Google in diesem Punkt nicht so schlau wie gewöhnlich war und zufrieden ist, weil es JDO vorerst nicht unterstützt. Ich denke immer noch, dass sie es sich leisten können, und irgendwann wird Guice auch JDO verschlingen ... oder vielleicht auch nicht.