What is core difference between Java for Google App Engine and J2EE? (I am not familiar with Java at all so can you please explain me what is diference in general and in what to learn is better for resume)
Google App engine provides a limited subset of what you can do with the underlying machine. Biggest thing is that you can't access local storage and your request processing has to finish with a specified limit of time, otherwise your task will be terminated.
There's no difference in the language: they're both Java. The difference is what class libraries are available to you.
Google App Engine for Java is built upon a webapp container (Jetty) so it obviously offers only a subset of Java EE with some restrictions (but also additions to leverage their infrastructure using standardized APIs):
- Servlets 2.4, JSP 2.0
- Partial support of JDO & JPA for the Datastore
- JavaMail for... mail
- JAXB
- DOM, SAX, and XSLT for XML processing APIs
Java EE APIs and technologies not supported include:
- Enterprise Java Beans (EJB)
- JAX-RPC
- JAX-WS
- Java Database Connectivity (JDBC)
- Java EE™ Connector Architecture (JCA)
- Java Management Extensions (JMX)
- Java Message Service (JMS)
- Java Naming and Directory Interface (JNDI)
- Remote Method Invocation (RMI)
More details in Will it play in App Engine.
By the way, we don't say J2EE anymore, it's Java EE since 2005 :)