Hello, I'm trying to figure out the purpose of the various jars that are shipped with the SDK, mainly the ones that I should be interested at as SDK user.
Generally, what I'm currently holding in my classpath are the following jars. Not sure this is the correct approach but it seems to be working. This allows me to run local unit tests using the SDK provided stub environment and also seems to OK for deployment to GAE production: impl/appengine-api-labs.jar impl/appengine-api-stubs.jar impl/appengine-api.jar impl/appengine-local-runtime.jar testing/appengine-testing.jar As for the shipped libraries, here is a quick analysis. I would appreciate if people could contribute more knowledge. ma...@maxim-desktop:~/Downloads/appengine-java-sdk-1.4.0/lib$ tree . |-- agent | |-- appengine-agentimpl.jar - Not relevant, class loading while/black list implementation | `-- appengine-agent.jar - Not relevant, agent interface |-- appengine-tools-api.jar - SDK framework, some interesting 3rd party jars are repacked here (google.common, google.cron, google.io, google.net, google.protobuf, yamlbeans, antlr, joda, mortbay.jetty and some utilities such as utils.glob, the .class enhancer, gwt launcher and some more stuff). |-- impl | |-- agent | | `-- appengine-agentruntime.jar - Yet another agent impl, not sure the difference from the agent/appengine-agentimpl.jar ? | |-- appengine-api.jar - GAE API: com.google.appengine.api.*, (google.common, google.io, google.net, google.protobuf (again?)), appstats utility api, the remoteapi servlet, the various servlet implementations (MultipartMimeUtils, ParseBlobUploadFilter, SessionCleanupSevlet, TransactionCleanupFilter, *WarmupServlet *!), storage.onestore ? and some J2EE dependency stuff (javax.activation, javax.mail) + some nice utilities such as org.apache.geronimo.mail.util.Base64Encoder | |-- appengine-api-labs.jar - GAE labs API: com.google.appengine.api.labs.taskqueue, resources for appstats (why here?), repackaged.org.json | |-- appengine-api-stubs.jar - Stub *implementations(?)* of appengine-api (+ appengine-api-labs)?, some 3rd party libraries such as: org.apache.common.codec, org.apache.common.httpclient, org.apache.common.logging, org.quartz (scheduler). | `-- appengine-local-runtime.jar - repackaged.com.google.(common, cron, io, net, protobuf) again?, some 3rd party utilities: yamlbeans, org.apache.tools.ant, mortbay.jetty |-- shared | |-- appengine-local-runtime-shared.jar - Implementation for local _ah admin console? | |-- el-api.jar - (tomcat?) | |-- jsp (tomcat?) | | |-- LICENSE | | |-- repackaged-appengine-ant-1.7.1.jar | | |-- repackaged-appengine-ant-launcher-1.7.1.jar | | |-- repackaged-appengine-jasper-6.0.29.jar (tomcat!) | | |-- repackaged-appengine-jasper-el-6.0.29.jar (tomcat!) | | `-- repackaged-appengine-tomcat-juli-6.0.29.jar (tomcat!) | |-- jsp-api.jar (tomcat?) | |-- LICENSE | `-- servlet-api.jar (tomcat?) |-- testing | `-- appengine-testing.jar - The mock environment setup utilities (Local*ServiceTestConfig) + the regular repacked.com.google.*, |-- tools | |-- jsp (tomcat) | | |-- LICENSE | | |-- repackaged-appengine-jakarta-jstl-1.1.2.jar | | |-- repackaged-appengine-jakarta-standard-1.1.2.jar | | `-- repackaged-appengine-jasper-jdt-6.0.29.jar | `-- orm | |-- asm-3.1.jar | |-- datanucleus-core-1.1.5.jar | |-- datanucleus-enhancer-1.1.4.jar | |-- datanucleus-jpa-1.1.5.jar | |-- geronimo-jpa_3.0_spec-1.1.1.jar | |-- geronimo-jta_1.1_spec-1.1.1.jar | `-- jdo2-api-2.3-eb.jar `-- user |-- appengine-api-1.0-sdk-1.4.0.jar - Implementation of the appengine-api.jar, not sure if this is the code that actually runs on GAE. I can verify that uploading the application without this jar does not break runtime environment. I think it's here to allow local environment runtime. Would appreciate more info. Just guessing... |-- appengine-api-labs-1.4.0.jar - Implementation of the appengine-api-labs, same caveats as appengine-api-1.0-sdk-1.4.0.jar apply here. |-- appengine-jsr107cache-1.4.0.jar - Google implementation of jsr107. |-- jsr107cache-1.1.jar - jsr107 api's. `-- orm - boring... |-- datanucleus-appengine-1.0.7.final.jar - boring... |-- datanucleus-core-1.1.5.jar - boring... |-- datanucleus-jpa-1.1.5.jar - boring... |-- geronimo-jpa_3.0_spec-1.1.1.jar - boring... |-- geronimo-jta_1.1_spec-1.1.1.jar - boring... `-- jdo2-api-2.3-eb.jar - boring... 11 directories, 41 files Finally, after this quick (30min) analysis. I can certainly say that I don't understand the jar directory organization structure. What is the meaning of the name "user" directory? Is impl/appengine-local-runtime.jar an API jar or an implementation? and more generally, why the API jars are kept in the "impl" direcotry? Anyways, I think that my initial jar selection to be included in the classpath was correct :). We are running with this for the past 2 months and it seems to work. I would appreciate confirmation on this statement as well. Thank you, Maxim. -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.