java a j2ee

80
Java a J2EE Peter Blšták

Upload: yachi

Post on 08-Jan-2016

49 views

Category:

Documents


0 download

DESCRIPTION

Java a J2EE. Peter Blšták. Obsah. Java charakteristika JavaBeans JDBC edície a verzie JEE (J2EE) špecifikácia JEE (JEE APIs) JEE kontajnery Java Servlets, JSP EJB. Java. Java. OO programovací jazyk (+ nástroje a knižnice) organizovanie programu do tried (objektov) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Java a J2EE

Java a J2EE

Peter Blšták

Page 2: Java a J2EE

2

Obsah

• Java• charakteristika • JavaBeans• JDBC• edície a verzie

• JEE (J2EE)• špecifikácia JEE (JEE APIs)• JEE kontajnery• Java Servlets, JSP• EJB

Page 3: Java a J2EE

3

Java

Page 4: Java a J2EE

4

Java

• OO programovací jazyk (+ nástroje a knižnice)• organizovanie programu do tried (objektov)

držia svoj stav (atribúty) vykonávajú funkčnosť, príp. menia svoj stav (metódy) interagujú s inými objektami (asociácie, referencie,

metódy)• syntax podobná C++

• interpretovaný (multiplatformový)• kompilovanie do tvaru Java bytecode

*.java -> *.class• JVM (Java Virtual Machine) – interpreter bytecode• Windows, Linux / Unix, MAC, mobilné

zariadenia, ...

Page 5: Java a J2EE

5

Java (vs. C++)

• packages (balíky)• triedy sú organizované do namespace-ov (balíkov)

triede – súbor z názvom triedy balík – adresárová štruktúra

• java.lang.Object – trieda• /java/lang/Object.java (v src)• /java/lang/Object.class (v classes)

• všetky objekty dedia od java.lang.Object• takmer všetko je objekt

(okrem jednoduchých typov int, doube, ...)

Page 6: Java a J2EE

6

Java (vs. C++)

• referencie (nemá pointre)

• garbage collection • bez destructor-ov a delete• JVM runtime – odstraňovanie objektov bez

referencie naň

• jednoduchá dedičnosť + interface-y

• všetky metódy ako „C++ virtual“• polymorfizmus (tak ako sa patrí)

• nemáme header súbory (*.h, *.hpp)• javadoc (generovanie)

Page 7: Java a J2EE

7

Java trieda – príklad

package sk.tf.development.model;

import java.lang.RuntimeException;

import sk.tf.core.actions.*;

public class Kniha extends PersistentObject

implements Serializable, ContextListner {

private String ciarovyKod;

private BigDecimal cena;

private Vector vypozicky;

public void removeVypozicky(ActionContext context, Vector vypozicky) {

}

}

Page 8: Java a J2EE

8

Java (vs. C++)

• štandardné knižnice• ADT (Vector, List, Collection, Set, Array, ...)• thread synchronization, networking, logging,

internationalization• reflection, dynamic-proxies• AWT, Swing (grafické komponenty)• XML (SAX, DOM, XSLT)• JavaBeans• JDBC, Corba, ... (enterprise features)• modifikácia bytecode (=> rutime enhancements)

• exceptions (checked, runtime)• java.lang.Exception• java.lang.RuntimeException

Page 9: Java a J2EE

9

Page 10: Java a J2EE

10

Java 5 – zaujímavé vlastnosti

• anotácie• dodatočné informácie k Java kódu• využívané pri preklade alebo runtime @Overrideprotected void renderComponent(...)

• generické (template) typy private Collection<Objednavka> objednavky;

• enumerácie ~ štruktúrovaný typ

• Scripting – podpora pre skriptovacie jazyky • jRuby, Groovy, Mozilla Rhino …

Page 11: Java a J2EE

11

JAR – Java ARchive

• knižničný súbor• skompilované Java objekty• ďalšie zdroje (*.gif, *.properties, ...)

• ZIP s koncovkou jar

• classpath• vykonanie alebo skompilovanie programu• definuje cestu k triedam a ďalším zdrojom

(*.class, *.jar, ...)

Page 12: Java a J2EE

12

JavaBeans

• POJO (Plain Old Java Object)• názvové a štrukturálne konvencie pre triedu

verejná trieda s verejným prázdnym konštruktorom atribúty:

private Type xxx; metódy:

public Type getXxx(); public void setXxx(Type xxx);

• Java poskytuje API na manipuláciu s vlastnosťami na základe mena (reflection)

Page 13: Java a J2EE

13

JavaBeans – príklad

public class Kniha extends PersistentObject {

private String ciarovyKod;

private BigDecimal cena;

public Kniha() { … }

public String getCiarovyKod() { return ciarovyKod; }

public void setCiarovyKod(String ciarovyKod) {

this.ciarovyKod = ciarovyKod;

}

public BigDecimal getCena() { return cena; }

public void setCiarovyKod(BigDecimal cena) {

this.cena = cena;

}

}

Page 14: Java a J2EE

14

JDBC

• Java DataBase Connectivity

• API – unifikovaný prístup k RDBMS• odtieňuje aplikáciu od použitého RDBMS a jeho

špecifických vlastností preklad SQL do natívnych SQL dotazov abstraktné volania a štruktúry (ResultSet, Connection)

• zvýšenie výkonu zabezpečuje connection pooling

• JDBC driver pre konkrétny RDBMS• JDBC-ODBC bridge• MS SQL Server – net.sourceforge.jtds.jdbc.Driver• MySQL – org.gjt.mm.mysql.Driver

Page 15: Java a J2EE

15

JDBC – príklad

public Vector getBalances() throws AccountException {

try {

Connection conn = getConnection();

PreparedStatement pstmt = conn.prepareStatement(“SELECT * FROM account WHERE balace > ?");

pstmt.setDouble(1, 20000.0);

ResultSet rs = pstmt.executeQuery();

while (rs.next()) {

result.add(rs.getDouble(“balance"));

}

return result;

} catch (Exception e) {

throw new AccountException(e);

} finally {

try { if (pstmt != null) pstmt.close(); } catch (Exception e) {}

try { if (conn != null) conn.close(); } catch (Exception e) {}

}

}

Page 16: Java a J2EE

16

JDBC – príklad

protected Connection getConnection() {

Class.forName(“org.gjt.mm.mysql.Driver”);

String url = "jdbc:mysql://localhost:3306/dbname";

return DriverManager.getConnection(url, “username", “password");

}

protected Connection getConnection() {

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/appDS");

return ds.getConnection();

}

Page 17: Java a J2EE

17

Java edície a ich verzie

• JRE – Java Runtime Environment• JVM a základné knižnice potrebné pre

vykonávanie programov

• JSE – Standard Eddition• vývoj stand-alone (desktop) aplikácií• JRE, štandardné knižnice, zdrojové súbory a

nástroje (javac, javadoc, ...)

Page 18: Java a J2EE

18

Java edície a ich verzie

• JME – Micro Eddition• vývoj aplikácií pre mobilné zariadenia (mobilné

zariadenia – mobilné telefóny, PDA) zariadenia majú predinštalované runtime prostredie

• nástroje pre simuláciu mobilných zariadení

• JEE – Enterprise Eddition• vývoj podnikových aplikácií• knižnice pre podnikové aplikácie, kontajnery, ...• nadstavba nad JSE (neobsahuje JRE, javac, jar)

Page 19: Java a J2EE

19

Java edície a ich verzie

• JSE ~ JRE

• súčasnosť • Java ME

CLDC 1.1 - Connected Limited Device Configuration

CDC 1.1 - Connected Device Configuration• Java SE 1.4.x, 5 (1.5.x) a 6

JDK – Java Development Kit• Java EE 1.3, 1.4, 5

Page 20: Java a J2EE

20

Java Platform Enterprise Eddition

Page 21: Java a J2EE

21

JEE

• The mission of JEE is to provide a platform-independent, portable, multiuser, secure, and standard enterpriseclass platform for server-side deployments written in the Java language.

• JEE is a specification, not a product.

• JEE definuje• programové rozhrania (APIs)• runtime environment (JEE kontajner)

čo majú poskytovať ako sa majú používať

Page 22: Java a J2EE

22

Architektúra JEE aplikácií

Page 23: Java a J2EE

23

JEE kontajnery

Page 24: Java a J2EE

24

Page 25: Java a J2EE

25

JEE APIs – z JSE

• JDBC API 3.0• Java DataBase Connectivity

• RMI-IIOP• Remote Method Invocation over the Internet Inter-

ORB Protocol

• JNDI • Java Naming and Directory Interface

• JAXP 1.2 • Java API for XML Processing

• JAAS • Java Authentication and Authorization Service

Page 26: Java a J2EE

26

JEE APIs – core

• EJB 3.0 (2.1) 001• Enterprise JavaBeans Technology

• Servlet 2.5 010• Java Servlet Technology

• JSP 2.1 010• JavaServer Pages Technology

• JMS 1.1 111• Java Message Service

• JTA a JPA 011• Java Transaction API a Java Persistance API

Page 27: Java a J2EE

27

JEE APIs – WebServices

• JAX-WS 2.0 111• Java API for XML-Based Web Services

• JAX-RPC 1.1 111• Java API for XML-Based RPC

• JAXB 2.0 111• Java Architecture for XML Binding

• SAAJ 1.2 111• SOAP with Attachments API for Java

• JAXR 1.0 111• Java API for XML Registries (ebXML, UDDI)

Page 28: Java a J2EE

28

JEE APIs – iné

• JavaMail 1.3 111• JavaMail API

• JAF 1.1 111• JavaBeans Activation Framework

• JCA 1.5 011• J2EE Connector Architecture

Page 29: Java a J2EE

29

JEE APIs – iné

• J2EE Management 1.0 1011

• JMX 1.2 1011• Java Management Extensions

• JACC 1.0 0011• Java Authorization Contract for Containers

Page 30: Java a J2EE

30

WEB aplikácie

Page 31: Java a J2EE

31

WEB aplikácie

• Java Servlets• servlet• filter

• JavaServer Pages – JSP• JSP stránky• tag libraries

JSTL, Struts tag libs, ... custom tag libs

• JavaServer Faces – JSF• Komponentový prístup pre vývoj web aplikácií

• WEB (Servlet) kontajner

Page 32: Java a J2EE

32

Servlet

• podobné CGI, perl, ...• obsluha požiadaviek na základe request-u a

generovanie response (HTML, XML, PDF, ...)

• tvorba WEB (prezentačnej vrstvy) aplikácie

• Java trieda odvodená od • javax.servlet.Servlet• javax.servlet.http.HttpServlet

• HttpServlet• metódy volané WEB (Servlet) kontajnerom

doGet(HttpServletRequest, HttpServletResponse) doPost(HttpServletRequest, HttpServletResponse) ...

Page 33: Java a J2EE

33

HttpServletRequest

• reprezentuje HTTP request

• HTTP parametre (GET, POST), hlavičky, ...• getParameter(String name)• getHeaders()• getCookies() • getLocale(), getContentType()

• security• getRemoteUser()• getUserPrincipal()• isUserInRole(String role)

• informácie o klientovi a contexte (IP, URL)

Page 34: Java a J2EE

34

HttpServletResponse

• reprezentuje HTTP response a jeho obsah• getWriter()• getOutputStream()• setContentType(String contentType)• addHeader(String name, String value)• addCookie(Cookie)

• redirection• setStatus(int status)• sendRedirect(String location)

Page 35: Java a J2EE

35

Ďalšie objekty Servlet API

• HttpSession• perzistetné atribúty, ktoré sa vzťahujú k jednému

používateľovi (sedenie)• getCreationTime()• getLastAccessTime()• getId()

• ServletContext• globálne informácie pre danú aplikáciu

(nepoužívať static premenné)• informácie o serveri, kontexte a zdrojoch servera

Page 36: Java a J2EE

36

Servlet – príklad

package examples;

public class SearchAlbumServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

List albums = Album.findNamed(request.getParameter("name"));

PrintWriter out = response.getWriter();

out.write(“<html><body><h1>Found albums:</h1>”);

for (int i = 0; i < albums; i++) {

Album album = (Album)albums.get(i);

out.write(“<li>” + album.getName() );

}

out.write(“</body></html>”);

}

}

http://www.site.sk/app/searchAlbum?name=Rounds

Page 37: Java a J2EE

37

Filter

• wrapper requestov• doFilter(request, response, ...)

• realizácia aspektov (AOP ???)• Authentication• Logging and Auditing• Image conversion• Data compression• Encryption• XSL/T

Page 38: Java a J2EE

38

Filter – príklad

public class AuditFilter implements Filter {

public void doFilter(ServletRequest request,

ServletResponse response,

FilterChain chain)

throws IOException, ServletException {

AuditHelper auditHelper = getAuditHelper(request);

if (auditHelper != null) {

auditHelper.audit(request);

}

// Pass control on to the next filter

chain.doFilter(request, response);

}

}

Page 39: Java a J2EE

39

JSP – JavaServer Pages

• principiálne podobné k PHP, ASP, ...

• statické HTML s dynamicky generovanými časťami • scriptlety (časť JSP medzi <% … %>)

out, response, request premenné

• JSP tagy

• sprehľadnenie generovaného HTML

• zrýchlenie vývoja • GUI design (možnosť použiť WYSIWYG nástroje)• programovanie

• JSP je v runtime Servlet

Page 40: Java a J2EE

40

JSP tag libraries

• knižnice (jar) špecializovaných JSP tagov

• sprehľadnenie kódu (JSP)

• zlepšenie udržiavateľnosti

• JSTL – Java Standard Tag Libraries• štandardná knižnica od Sun-u

• custom libraries• Struts (bean, logic, html, nested)• jakarta tag libraries (SQL, ...)

• definícia – *.tld súbor • class, name, attributes, scripting variables, ...

Page 41: Java a J2EE

41

JSP – príklad

<%@ page import=“example.ArtistHelper" %>

<HTML>

static HTML

<UL>

<% ArtistHelper helper = (ArtistHelper) request.getAttribute("helper");

for (int i = 0; i < helper.getAlbums().size(); i++) {

out.print("<LI> ");

out.print(((Album)helper.getAlbums().get(i)).getTitle())

out.print("</LI> ");

}

%>

</UL>

</HTML>

Page 42: Java a J2EE

42

JSP – príklad

<%@ taglib uri="/taglibs/struts-bean" prefix="bean" %>

<bean:define id="form" name="changePasswordForm" type="yonban.promasus.view.ChangePasswordForm" />

<html:form action="<%= form.getFormAction() %>“>

<h1><bean:message key="title.changePassword" /></h1>

<table cellpadding="5" cellspacing="0" border="0">

<nested:nest property="item">

<tr>

<td><bean:message key="text.oldPassword" />:</td>

<td><nested:password property="oldPassword" redisplay="false"/>

</td>

</tr>

...

</table>

</html:form>

Page 43: Java a J2EE

43

WEB (Servlet) kontajner

• runtime prostredie pre servlety, JSP, filtre• mapovanie URL na komponenty• security• API

• WEB aplikácie• deployment v podobe .war súboru

.war (Web ARchive) – zip s koncovkou war web.xml – deskriptor WEB komponentov

• príklady kontajnerov – Tomcat, Resin

Page 44: Java a J2EE

44

Štruktúra WAR

/ kontext rootJSP, HTML, obrázky

/META-INF/MANIFEST.MF

/WEB-INF/classes/ súčasť classpath

/WEB-INF/lib/ súčasť classpath

/WEB-INF/web.xml deskriptor

/WEB-INF/jboss-web.xml vendor specificdeskriptor

Page 45: Java a J2EE

45

WEB deskriptor – web.xml

• definícia servletov a filtrov a ich inicializačných parametrov

• mapovanie URL – servlet

• mapovanie URL – filter

• definícia JSP tag libraries

• definícia security

• definícia parametrov contextu (aplikácie)

• ...

Page 46: Java a J2EE

46

web.xml – príklad

<servlet>

<servlet-name>SearchAlbumServlet</servlet-name>

<servlet-class>examples.SearchAlbumServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>SearchAlbumServlet</servlet-name>

<url-pattern>/searchAlbum</url-pattern> (/*.do, /secure/*)

</servlet-mapping>

...

<taglib>

<taglib-uri>/taglibs/struts-bean</taglib-uri>

<taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>

</taglib>

...

Page 47: Java a J2EE

47

EJB

Page 48: Java a J2EE

48

EJB

• realizácia business logiky podnikových aplikácií

• komponentovo orientované riešenia• znovupoužitie komponentov (reusing)• komponent = Enterprise JavaBeans (EJB)

Session EJB Session Bean WebService Entity EJB MessageDriven EJB

• EJB kontajner

Page 49: Java a J2EE

49

Page 50: Java a J2EE

50

Page 51: Java a J2EE

51

Explicit middleware

Page 52: Java a J2EE

52

Implicit middleware (AOP)

Page 53: Java a J2EE

53

Implicit middleware (AOP)

• jednoduchá údržba • oddelenie aplikačnej logiky od middleware• cross cutting concerns (centrálna definícia)• možnosť zmeny bez kompilácie

• čo rieši (môže riešiť) implicit middleware• riadenie (distribuovaných) transakcií• bezpečnosť• manažment zdrojov (resources – DB konekcie,

message queues)• perzistencia• remoting• logging, auditing

Page 54: Java a J2EE

54

Implicit middleware (AOP)

• EJB kontajner sa správa ako layer of indirection medzi klientským kódom a beanom

• layer of indirection -> request interceptor

• request interceptor = EJB objekt (networkaware object)

• a layer of indirection solves every problem in computer science

Page 55: Java a J2EE

55

Session EJB

• business process related logic• bank account transfer• perform order entry

• typy• Stateless

žiadny komunikačný stav pri každom requeste môže ísť o iný Enterprise Bean

• Statefull udržiava si komunikačný stav počas sedenia

(client session) počas sedenia vždy ten istý Enterprise Bean

Page 56: Java a J2EE

56

Page 57: Java a J2EE

57

Stateless Session Bean

Page 58: Java a J2EE

58

Statefull Session Bean

Page 59: Java a J2EE

59

Session EJB – príklad

package examples.ejb;

public interface Hello {

public String hello();

}

------------------------------------------------------------------

package examples.ejb;

@Stateless

@Remote(Hello.class)

public class HelloBean implements Hello {

public String hello() {

System.out.println("hello()");

return "Hello, World!";

}

}

Page 60: Java a J2EE

60

Použitie Session EJB – príklad

package examples.ejb;

import javax.naming.*;

public class HelloClient {

public static void main(String[] args) throws Exception {

Context ctx = new InitialContext();

Hello hello =(Hello)ctx.lookup("examples.ejb.Hello");

System.out.println(hello.hello());

}

}

Page 61: Java a J2EE

61

Realizácia EJB 2.x komponentov

• Enterprise Bean class (príp. PrimaryKey class)• obchodná logika (závisí od typu EJB)

• remote, local interface (EJB object)• klientské (remote / local) rozhranie pre volanie aplikačných

metód Enterprise Bean inštancií

• home, localhome interface (home object)• klientské (remote / local) rozhranie pre získanie

implementácie remote / local interfacu (EJB object)• Factory na získanie EJB objektov

• štandardný EJB deskriptor• previazanie Enterprise Bean triedy s interfacami• security, transakčnosť, ...

• špecifický EJB deskriptor• pooling policy, ...

Page 62: Java a J2EE

62

Entity EJB

• business data structures• order, order entry, bank account

• data related logic• reduce account balance, modify order entry

• EQL - EJB Query Language

Page 63: Java a J2EE

63

Entity EJB – RDBMS mapovanie

Page 64: Java a J2EE

64

MessageDriven EJB

Page 65: Java a J2EE

65

MessageDriven EJB

• podobné k Session Bean (obchodná logika)

• message oriented logic= asynchrónne volanie obchodnej logiky• receive stock trade message• nemá remote rozhranie

• vlastnosti • reliable, asynchronous, broadcasting

• spracovanie JMS (klientských) volaní• integrácia s inými systémami• dávkové spracovanie

Page 66: Java a J2EE

66

Page 67: Java a J2EE

67

EJB kontajner

• runtime prostredie EJB komponentov

• infraštruktúra (implicit middleware)• riadenie životného cyklu beanov + pooling• vzdialený prístup (remote access)• security, riadenie transakcií• perzistencia údajov, multiuser secure env.• monitoring, logging facility

• vertikálna a horizontálna škálovateľnosť• clustering (fault-tolerant – 24x7)• location transparency (distribuovanie komp.)

EJB komp. – EJB komp. WEB komp. – EJB komp.

Page 68: Java a J2EE

68

EJB kontajner

• EJB aplikácie• (hot) deployment v podobe .ear súboru

.ear (Enterprise ARchive) – zip s koncovkou ear application.xml – deskriptor aplikácie ejb-jar.xml - deskriptor EJB modulu

• príklady EJB (WEB) kontajnerov• JBoss (+Tomcat)• BEA WebLogic• IBM WebSphere• Oracle AS (Orion)

Page 69: Java a J2EE

69

Štruktúra EAR

/META-INF/application.xml deskriptor aplikácie

/META-INF/orion-application.xml

/lib/ súčasť classpath

/*.war WEB module

/*.jar EJB module

/*.jar:META-INF/ejb-jar.xml

deskriptor EJB modulu

Page 70: Java a J2EE

70

application.xml

• zoznam WEB a EJB modulov danej Enterprise aplikácie

• mapovanie WEB modulov na context root name

http://www.site.sk/app/searchAlbum?name=Rounds

Page 71: Java a J2EE

71

EJB deskriptor – ejb-jar.xml

• definicie EJB komponentov• spojenie EJB class, remote a home interfacov• pripojenie na message queues• transakčnosť

• definícia security

• definícia zdrojov • message queues, DataSource-ov

Page 72: Java a J2EE

72

ejb-jar.xml - príklad

<session id="Hello_session">

<ejb-name>APP/ejb/Hello</ejb-name>

<ejb-class>examples.ejb.HelloBean</ejb-class>

<remote>examples.ejb.Hello</remote>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

...

</session>

Page 73: Java a J2EE

73

Zhrnutie EJB

• výhody• škálovateľnosť (vertikálna / horizontálna)• failover / high availability• distribuovanosť (distribuované transakcie)

• nevýhody (EJB 2.x)• nízka úroveň abstrakcie

príliš veľa kódu

• príliš komplikované aj v jednoduchých prípadoch núti zložité riešenie všetko je distribuované feature delocalization

Page 74: Java a J2EE

74

Zhrnutie EJB

• JEE 5 (J2EE 1.5)• rieši niektoré problémy J2EE

vylepšený EQL (podobné vlastnosti ako ORM) zjednodušenie EJB (použitie anotácií) ...

• náhrady za J2EE• open-source

remoting, transakcie (distribuované), security (AOP), ORM

Springframework + Hibernate

• ...

Page 75: Java a J2EE

75

SOA a WebServices

Page 76: Java a J2EE

76

Page 77: Java a J2EE

77

SOA a WebServices

• SOA = Service Oriented Architecture• služba (komponent, jednotka IS)

definovaná svojím rozhraním

• IS integrácia vlastných a cudzích služieb orchestrácia služieb (chlievikové programovanie)

• WebService = služba• komunikačný protokol HTTP(S)• správy vo formáte XML = SOAP• definícia služby = WSDL súbor (XML)

obsahuje definície metód a ich argumentov (dátových štruktúry)

• "verejné" registre služieb (UDDI)

Page 78: Java a J2EE

78

Session EJB – príklad

package examples.ws;

@Stateless

@WebService(serviceName="Greeter",portName="GreeterPort")

public class HelloBean {

@WebMethod

public String hello() {

System.out.println("hello()");

return "Hello, World!";

}

}

Page 79: Java a J2EE

79

Použitie Session EJB – príklad

package examples.ws;

import javax.xml.ws.Service;

public class HelloClient {

public static void main(String[] args) throws Exception {

URL wsdlLocation = new URL(host + "/" + port "?WSDL")

Service service =

Service.create(wsdlLocation, serviceNameQ);

HelloBean hello = service.getPort(HelloBean.class);

System.out.println(hello.hello());

}

}

Page 80: Java a J2EE

80

Zhrnutie

• Java• OO multiplatfomový interpretovaný jazyk• realizácia širokej škály typov aplikácií• bohaté knižnice (štandardné, thirdparty, ...)

• JEE• štandard na realizáciu podnikových server aplikácií• Servlet a EJB kontajnery• WEB komponenty

(Servlet, JSP)• EJB komponenty

(EJB – Session, Entity, MessageDriven)• WebServices

• http://java.sun.com/