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.

Reply via email to