Upload
loctran999
View
216
Download
1
Embed Size (px)
Citation preview
8/28/2011
1
LẬP TRÌNH WEB HƯỚNG JAVABài 05: Tổng quan về Java EE
Giảng viên: ThS. Trịnh Tuấn ĐạtBộ môn CNPM
Email: [email protected]/[email protected]
Bộ môn Công nghệ Phần mềmViện CNTT & TT
Trường Đại học Bách Khoa Hà Nội
Nội dung
1. J2EE là gì? 2. Sự phát triển của các Enterprise Application
Frameworks 3. Tại sao lựa chọn J2EE? 4. J2EE APIs and Technologies 5. Standard Impl (J2EE 1.4), Compatibility Test
Suite (CTS) 6. BluePrints 7. J2EE và Web Services 8. Các bước nghiên cứu J2EE
1. J2EE là gì?
3
ChallengesPortabilityDiverseEnvironmentsTime-to-marketCore CompetenceAssemblyIntegration
KeyTechnologiesJ2SE™
J2EE™
JMSServletJSPConnectorXMLData BindingXSLT
ProductsApp ServersWeb ServersComponentsDatabasesObject to DBtools
LegacySystems
DatabasesTP MonitorsEIS Systems
Enterprise Computing
J2EE là gì?
Là nền tảng (platform) mở, chuẩn tắc để phát triển (developing), triển khai (deploying) và
quản lý (managing)các ứng dụng doanh nghiệp hướng thành phần(component-based), ứng dụng Web, Server, …
Java™ Platform
High-EndServer
Java TechnologyEnabled Desktop
WorkgroupServer
Java TechnologyEnabled Devices
8/28/2011
2
JavaTM Platform
OptionalPackages
Java 2Enterprise
Edition(J2EE)
Java 2StandardEdition(J2SE)
JVM
JavaCardAPIs
CardVM
OptionalPackages
PersonalBasis Profile
PersonalProfile
Foundation Profile
CDC
MIDP
CLDC
KVM
Java 2 Platform Micro Edition(J2METM)
* Under development in JCP
2. Sự phát triển của cácEnterprise ApplicationFrameworks
8
2. Sự phát triển của các Enterprise ApplicationFrameworks
1 tầng (Single tier) 2 tầng (Two tier) 3 tầng (Three tier )
Dựa trên RPC Dựa trên Remote object
3 tầng (HTML browser và Web server) Máy chủ ứng dụng độc quyền (Proprietary
application server) Máy chủ ứng dụng chuẩn (Standard application
server)
Ứng dụng doanh nghiệp (EnterpriseApplications)
Các thành phần của 1 enterprise application Presentation logic Business logic Data access logic (và data model) System services
Sự phát triển của 1 enterprise applicationframework thể hiện ở Cách thức thay đổi linh động như thế nào? Các dịch vụ hệ thống được cung cấp ra sao?
Single Tier (Mainframe-based)
Dumb terminals kết nối trực tiếp với mainframe Theo mô hình tập trung (ngược với mô hình phân
tán) Các xử lý Presentation, business, và data access
được thực hiện duy nhất trong 1 ứng dụng ởmainframe
Single-Tier: Ưu nhược điểm
Ưu điểm: Không cần quản lý phía client Nhất quán dữ liệu (Data consistency)
Nhược điểm: Các thao tác (presentation, data model, business
logic) được mix vào lẫn nhau khó bảo trì & táisử dụng code.
8/28/2011
3
Two-Tier
Fat clients giao tiếp với database phía sau Gửi truy vấn SQL, nhận về dữ liệu thô
Presentation, Business logic và Data Modelprocessing logic đều nằm trong ứng dụngclient
Database
SQL request
SQLresponse
Two-Tier
Thuận lợi: DB product independence
Cons: Presentation, data model, business logic được mix lẫn
nhau ở client khó cập nhật & bảo trì Data Model đính chặt với mọi client: nếu CSDL thay đổi tất cả clients đều hỏng
Các cập nhật phải được tiến hành trên tất cả các clients ác mộng trong bảo trì hệ thống
Tạo DB connection cho tất cả client Tốn tài nguyên,khó mở rộng
Trao đổi dữ liệu thô (Raw data) tốn băng thông
Three-Tier (RPC based)
Thinner client: business & data model được táchbiệt với presentation Business logic và data access logic nằm trên server trung
gian (middle tier server), client xử lý presentation
Middle tier server cần xử lý các dịch vụ hệ thống Điều khiển tương tranh, đa luồng, transaction, security,
persistence, multiplexing, performance, ...
Database
SQLrequest
SQLresponse
RPC response
RPC request
Three-tier (RPC based): ưu nhược điểm
Ưu điểm: Business logic thay đổi linh động hơn so với mô
hình 2-tier (Nằm trên middle-tier server)
Nhược điểm: Độ phức tạp cao ở middle-tier server Client và middle-tier server liên kết khá chặt (So
với mô hình three-tier object based) Chưa thực sự tái sử dụng được Code (So với mô
hình three-tier object based)
Three-Tier (Remote Object based)
Business logic và data model phát triển theo môhình ĐT Business logic và data model được mô tả “trừu tượng”
(interface language)
Mô hình đối tượng được sử dụng: CORBA, RMI,DCOM Interface language trong CORBA là IDL Interface language trong RMI là Java interface
Database
SQLrequestSQLresponse
Object response
Object request
Three-tier (Remote Object based): ưunhược điểm
Ưu điểm: Kết nối linh động hơn mô hình RPC Tái sử dụng Code tốt hơn
Nhược điểm: Vẫn có độ phức tạp ở server trung gian
8/28/2011
4
Three-Tier (Web Server)
Browser xử lý presentation logic Browser giao tiếp với Web server qua giao
thức HTTP Business logic và data model được xử lý theo
công nghệ “Sinh nội dung động” (CGI,Servlet/JSP, ASP)
SQLrequest
SQLresponse
HTML response
WEBServer
HTML requestDatabase
Three-tier (Web Server based): ưu nhượcđiểm
Ưu điểm: Đa dạng cho thiết bị client
Điện thoại di động hỗ trợ J2ME, …
Không cần quản lý client
Nhược điểm: Vẫn còn phức tạp ở tầng trung gian
Xu hướng
Chuyển kiến trúc single-tier hoặc two-tierthành kiến trúc multi-tier
Chuyển từ mô hình nguyên khối (monolithicmodel) sang mô hình ứng dụng hướng đốitượng
Chuyển ứng dụng client thành HTML-basedclient
Multi-tier
Single-tier vs. Multi-tier
No separationamong presentation,business logic,database
Hard to maintain
Separation amongpresentation,business logic,database
More flexible tochange, i.e.presentation canchange withoutaffecting other tiers
Single tier
Object-based
Monolithic vs. Object-based
1 Binary file Recompiled,
relinked,redeployed everytime there is achange
Pluggable parts Reusable Enables better
design Easier update Implementation
can be separatedfrom interface
Only interface ispublished
Monolithic
Các vấn đề và gải pháp nổi bật
Phức tạp ở middle tier server Cần nhân bản các dịch vụ hệ thống, giải
quyết các vấn đề về Concurrency control, Transactions Load-balancing, Security Resource management, Connection pooling
Giải pháp? Cần có 1 container chung xử lý toàn bộ dịch vụ
hệ thống ở trên Giải pháp độc quyền và giải pháp mở, chuẩn
8/28/2011
5
Giải pháp độc quyền-Proprietary Solution
Sử dụng mô hình "component và container" Components đảm nhiệm các business logic Container cung cấp môi trường thực thi kèm các
dịch vụ hệ thống
Components và container có giao kết chặtchẽ, rõ ràng nhưng theo cách thức của bêncung cấp Vấn đề: phụ thuộc vào nhà cung cấp
Ví dụ: Tuxedo, .NET
Giải pháp mở & chuẩn - Open andStandard Solution
Sử dụng mô hình "component và container"trong đó container cung cấp các dịch vụ hệthống theo chuẩn.
J2EE: là 1 chuẩn như thế, cho phép linhđộng trong code Dựa trên công nghệ Java và standard-based Java
programming APIs
3. Tại sao lựa chọn J2EE?
27
Với Developers
Có thể sử dụng bất kỳ J2EE implementation nào đểphát triển và triển khai Bản chuẩn tắc, chất lượng, miễn phí Bản nâng cao, có phí, đảm bảo scalability và fault-
tolerance
Có rất nhiều tài nguyên trong cộng đồng J2EE books, articles, tutorials, quality code, best practice
guidelines, design patterns etc.
Sử dụng các thành phần có sẵn (off-the-shelf) củabên thứ 3
Với Vendors
Vendors: cùng tạo ra các đặc tả(specifications), sau đó cạnh tranh trong càiđặt/thực thi Trong các lĩnh vực Scalability, Performance,
Reliability, Availability, và development tools, …
Tự do sáng tạo trong cài đặt, vẫn đảm bảotính portability của các ứng dụng
Không cần create/maintain các APIs choriêng mình
Với Business Customers
Đảm bảo tính portability cho ứng dụng Có nhiều thực thi để lựa chọn, tùy
requirements Price (freetrả phí), scalability (1 CPU mô
hình clustered), reliability, performance, tools, … Luôn có lựa chọn tối ưu
Rất nhiều công cụ phát triển
8/28/2011
6
4. J2EE APIs & Technologies
31
J2EE 1.4 APIs and Technologies
J2SE 1.4 (improved) JAX-RPC (new) Web Service for J2EE J2EE Management J2EE Deployment JMX 1.1 JMS 1.1 JTA 1.0
Servlet 2.4 JSP 2.0 EJB 2.1 JAXR Connector 1.5 JACC JAXP 1.2 JavaMail 1.3 JAF 1.0
Java EE 5
JAX-WS 2.0 & JSR 181 Java Persistence EJB 3.0 JAXB 2.0 JavaSever Faces 1.2 – new to Platform JSP 2.1 – Unification w/ JSF 1.2 StAX – Pull Parser – new to Platform
4.1. Servlet &JSP (JavaServer Pages)
Servlet là gì?
Servlets là các Java™ objects, mở rộng chứcnăng của 1 HTTP server Cho phép sinh động nội dung (Dynamic contents
generation)
Là lựa chọn ưu việt hơn CGI, NSAPI, ISAPI,... Độ hiệu quả Độc lập Platform và Server Hỗ trợ quản lý Session Nền tảng Java
Servlet vs. CGI
CGIBased
Webserver
CGIBased
Webserver
Request CGI1Child for CGI1
CGIBased
Webserver
Servlet Based Webserver
JVM
Request CGI1Child for CGI1
Request Servlet1
CGIBased
Webserver
Servlet Based Webserver
JVMServlet1
Request CGI1Child for CGI1
Request CGI2
Request Servlet1
CGIBased
WebserverChild for CGI2
Servlet Based Webserver
JVMServlet1
Request CGI1Child for CGI1
Request CGI2
Request Servlet1
Request Servlet2
CGIBased
WebserverChild for CGI2
Servlet Based Webserver
JVMServlet1
Servlet2
Request CGI1Child for CGI1
Request CGI2
Request CGI1
Request Servlet1
Request Servlet2
CGIBased
WebserverChild for CGI2
Child for CGI1
Servlet Based Webserver
JVMServlet1
Servlet2
Request CGI1Child for CGI1
Request CGI2
Request CGI1
Request Servlet1
Request Servlet2
Request Servlet1
CGIBased
WebserverChild for CGI2
Child for CGI1
Servlet Based Webserver
JVMServlet1
Servlet2
Request CGI1Child for CGI1
8/28/2011
7
Công nghệ JSP?
Cho phép tách biệt business logic khỏipresentation Presentation: dạng HTML hoặc XML/XSLT Business logic: được thực hiện với Java Beans
hoặc custom tags Bảo trì, tái sử dụng tốt hơn
Dễ mở rộng ứng dụng với custom tags Dựa trên công nghệ Servlet
4.2. EJB(Enterprise Java Beans)
EJB Technology?
Là công nghệ cho các components phíaserver
Cho phép phát triển và triển khai các ứngdụng doanh nghiệp với các tính năng caocấp: Transactional, distributed, multi-tier, portable,
scalable, secure, …
Tại sao sử dụng EJB Technology?
Tận dụng được các lợi ích của mô hình hướngthành phần trên server
Tách biệt business logic với system code Container cung cấp các system services
Đảm bảo tính portability cho các components Trên các servers khác nhau Trên môi trường tính toán khác nhau
Cho phép cấu hình tại thời điểm triển khai(deployment-time configuration) Deployment descriptor (XML file)
EJB Architecture Enterprise JavaBeans
Enterprise JavaBeans
Entity Bean Message-Driven Bean
Synchronous communication Asynchronous communication
Stateless Stateful
Bean managedPersistence
(BMP)
Container managedPersistence
(CMP)
Session Bean
8/28/2011
8
4.3. JMS(Java Message Service)
Java Message Service (JMS)
Messaging systems (MOM) cung cấp Giao tiếp linh động Giao tiếp không đồng bộ (Asynchronous communication) Có vai trò như 1 bưu điện tập trung
Lợi ích của các Messaging systems Flexible, Reliable, Scalable communication systems
Hỗ trợ mô hình: Point-to-Point, Publish & Subscribe JMS định nghĩa các chuẩn Java APIs cho các
messaging systems
4.4. Connector Architecture
Connector Architecture
Định nghĩa các API chuẩn tắc để tích hợp côngnghệ J2EE với các hệ thống EIS CICS, SAP, PeopleSoft, etc.
Nếu không có Connector architecture, mỗi Appserver phải cung cấp 1 adaptor riêng cho từng hệthống EIS m (# of App servers) x n (# of EIS's) Adaptors
Với Connector architecture, cùng 1 adaptor làm việcđược với tất cả App server tuân theo kiến trúc J2EEConnector 1 (common to all App servers) x n (# of EIS's) Adaptors
Bài toán m x n nếu không có ConnectorArchitecture
AppServer1
AppServer
AppServer3
AppServer2
SAP
EIS4
EIS3
m n
EIS2
4.5. JAAS (1 thành phần của J2SE 1.4)(Java Authentication &Authorization Service)
8/28/2011
9
JAAS: Authentication
Dễ dàng chuyển đổi các kỹ thuật xác thực sau: Userid/password Smartcard Kerberos Biometric (Sinh trắc học)
Cho phép ứng dụng là portable, không quan tâm sửdụng kỹ thuật xác thực nào JAAS cung cấp các API độc lập với kỹ thuật sử dụng
Cho các ứng dụng Java
Có file cấu hình (login configuration file) chứa thông tinvề kỹ thuật áp dụng cho 1 môi trường cụ thể
JAAS Pluggable Authentication
JAAS: Authorization
Không có JAAS, Java platform security dựatrên: Where the code originated Who signed the code
JAAS API hỗ trợ thêm: Who’s running the code
Hỗ trợ User-based authorization
4.6. Các J2EE APIs &Technologies khác
JNDI
Java Naming and Directory Interface Được sử dụng bởi các ứng dụng J2EE để
định vị tài nguyên & đối tượng (resources &objects) Ứng dụng: thông qua định danh để tham chiếu
tới đối tượng Định danh phải được cấu hình chỉ tới đối tượng
và hoặc tài nguyên nào bởi quản trị hệ thống khitriển khai ứng dụng
JDBC
Cung cấp Java API chuẩn tắc giao tiếp vớiCSDL quan hệ Sử dụng SQL
Các nhà cung cấp (Vendors) đưa ra các JDBCdriver tương ứng để Java API gọi đến
8/28/2011
10
4.7. J2EE là 1 kiến trúc End-to-End
J2EE Platform Architecture
B2BApplications
B2CApplications
WebServices
WirelessApplications
Application ServerEnterpriseInformation
Systems
ExistingApplications
Client
Client
Client
Client
Client
ClientTier
EnterpriseInformation
TierMiddle
Tier
EnterpriseInformation
Systems (EIS):RelationalDatabase,
LegacyApplications,ERP Systems
EnterpriseJavaBeans™
EnterpriseJavaBeans
Other Services:JNDI, JMS,JavaMail™
J2EEApplication
Server
WebServerJSP,
Servlets
Firewall
J2EE là giải pháp End-to-End
HTML/XML
N-tier J2EE Architecture
W e b T ie rE J B T ie r
4.8. J2EE Component &Container Architecture
JND
I
J2SE
JMS
RMI/I
IOP
JDB
C
Database
AppClient
App ClientContainer
HTTP/HTTPS
J2SE
RMI
J2SE
JND
I
JMS
RMI/I
IOP
JDB
C
JTA JavaMail
JAF JND
I
JMS
RMI/I
IOP
JDB
C
JTA JavaMail
JAF
HTTP/HTTPS
Applet Container
Applet JSP Servlet EJB
Web Container EJB Container
RMI
J2SE
J2EE Containers & Components
8/28/2011
11
ComponentsHandle
Containers và Components
Concurrency Security Availability Scalability Persistence Transaction Life-cycle
management Management
Presentation Business Logic
ContainersHandle
Containers & Components
Containers thực hiện các công việc 1 cáchthầm lặng (invisibly) Không có các APIs phức tạp
Đem đến tính simplicity và flexibility cho J2EE
Containers thực thi J2EE Gần giống với các components Các nhà sản xuất (Vendors) các containers tự do
sáng tạo
4.9. Vòng đời phát triển vàtriển khai các ứng dụng J2EE
Vòng đời phát triển ứng dụng J2EE
Viết và biên dịch các thành phần code Servlet, JSP, EJB
Viết deployment descriptors cho cáccomponents Từ Java EE 5, có thể thay bằng annotation
Tập hợp các components trong các ready-to-deployable package
Triển khai package trên server
Creation Assembly Deployment
Created byComponentDeveloper
Assembledand Augmentedby Application
Assembler
Processedby Deployer
Deploy
EnterpriseComponents
J2EE Container
J2EE APPJ2EE Modules
Minh họa cho vòng đờiCác Roles trong quá trình phát triển ứngdụng J2EE
Component provider Còn được gọi là Bean provider
Application assembler Deployer Platform provider
Còn được gọi là Container provider
Tools provider System administrator
8/28/2011
12
Deployment Descriptor
Chỉ dẫn cho container cách quản lý và điềukhiển hoạt động của các J2EE components Transaction Security Persistence
Cho phép declarative customization (ngượcvới programming customization) XML file
Đảm bảo tính portability cho mã nguồn
4.10. Các thành phần trongứng dụng J2EE Application
DB & EISResources
Browser
Stand-alone
Web Server EJB Server
Web Server EJB Server
Các thành phần có thể có trong ứng dụngJ2EE Các thành phần trong ứng dụng J2EE
Các ứng dụng J2EE 4 tầng: HTML client, JSP/Servlets, EJB, JDBC/Connector
Các ứng dụng J2EE 3 tầng: HTML client, JSP/Servlets, JDBC
Các ứng dụng J2EE 3 tầng: EJB standalone applications, EJB,
JDBC/Connector
Các ứng dụng B2B Enterprise Từ J2EE platform đến J2EE platform thông qua
trao đổi các JMS hoặc các thông điệp XML
Chọn loại nào?
Phụ thuộc vào 1 số yếu tố Requirements của ứng dụng Tầng EJB có sẵn có không Các tài nguyên cho developer có sẵn có không
5. J2EE 1.4Standard Implementation,Compatibility Suite, Brand
8/28/2011
13
5.1. Standard Implementation
Cài đặt cho J2EE 1.4: Sun Java ApplicationServer Platform Edition 8 Cài đặt theo đúng chuẩn đề ra Miễn phí phát triển và triển khai Được cập nhật liên tục
5.2. Compatibility Test Suite (CTS)
Nhiệm vụ lớn nhất của công nghệ Java™technology: Write Once, Run Anywhere™ Ứng dụng Java chạy trên bất kỳ máy ảo java nào Ứng dụng J2EE chạy được trên J2EE platform bất
kỳ Cần được test
J2EE Application Verification Kit (J2EEAVK)
Cách thức test tính portability của ứng dụngJ2EE? Sử dụng J2EE RI 1.3.1 và J2EE Application
Verification Kit (J2EE AVK)
Cách thức test: Static verification Dynamic verification
Lấy về các kết quả test, kiểm tra đã thỏamãn tất cả các yêu chí chưa.
5.3. Các sản phẩm cho J2EE Platform(Brand)
ATG Bea Systems Borland Computer
Associates Fujitsu Hitachi HP IBM IONA
iPlanet Macromedia NEC Oracle Pramati SilverStream Sybase Talarian Trifork
Các sản phẩm cho J2EE Platform
Tools IDE’s: Borland JBuilder Enterprise, WebGain
Visual Cafe’, IBM Visual Age for Java™, Forte™for Java™, Oracle JDeveloper, Macromedia Kawa
Modeling, Performance, Testing, etc.
Enterprise Integration: Connectors,Java Message Service (JMS) API, XML
Components Frameworks Applications
Đầu tư đảm bảo tính compatibility củaJ2EE
Sun đầu tư xây dựng các bộ compatibilitytest kit
Kiểm tra trình độ kỹ sư hàng năm để đảmbảo có sản phẩm chất lượng
Đầu tư vào Testing luôn cao hơn đầu tư vàođặc tả (specification), thực thi(implementation), thương mại (business)
> 10 million $ được đầu tư trong J2EEplatform compatibility
8/28/2011
14
6. J2EE Blueprint
6. J2EE Blueprint
Các hướng dẫn thực hành, mẫu thiết kế, cácnguyên lý thiết kế MVC pattern
Blueprint bao trùm tất cả các tầng Client tier Web tier Business logic (EJB) tier Database access tier
Có code mẫu/ví dụ đi kèm với J2EE 1.4 SDK Java Pet Store, Adventure builder
7. J2EE và Web Services?
Tại sao lựa chọn J2EE cho Web Services?
Web services đơn thuần là 1 trong nhiềukênh dịch vụ của J2EE (để khai thác tầngbusiness logic) Không cần thay đổi kiến trúc Dễ dàng chuyển đổi các J2EE components đã có
thành Web services
Rất nhiều ích lợi của J2EE được giữ lại trongWeb services Portability, Scalability, Reliability Không phụ thuộc vào vendor riêng lẻ nào
Mô hình Web services trên J2EE
DBMS
ExistingApps
ExistingApps
Services
Rich Clients
MIDPDevices
Browsers
HTML/XML
XMLP/SOAP
XHTML/WML
J2EE Server JSP™/ JavaServlet API / EJB™
JDBC
JMSConnectors
XMLP/SOAP
JSPJSP
EJBEJB
XMLP/SOAP
Hỗ trợ hiện tại của J2EE cho Web services
Java APIs cho Web Services đang phát triển rấtnhanh Web services dựa trên WUST (WSDL, UDDI, SOAP) được
hỗ trợ rất tốt Các tầng Web services tiếp theo đang được phát triển
Đã cung cấp các Tools để triển khai các J2EEcomponents thành Web services
J2EE đã định nghĩa framework đầy đủ cho WebServices (J2EE 1.4, Web services for J2EE)
8/28/2011
15
Các mục tiêu thiết kế của J2EE 1.4 WebServices Framework
Đảm bảo tính Portability cho các Webservices component Trên các vendor platform khác nhau Trên các operational environment khác nhau
Sử dụng các mô hình lập trình J2EE đã có đểthực thi/cài đặt các service
Dễ phát triển và triển khai (deploy) Java APIs mức cao Sử dụng mô hình triển khai đã có
J2EE 1.4 Web Services Framework
J2EE 1.4 (JSR 151) Web services for J2EE (JSR 109) JAX-RPC (JSR 101) JAXR (Java API for XML Registries) SAAJ (SOAP with Attachments API for Java) EJB 2.1
8. Các bước nghiên cứu J2EE?
Bước 1: Cho Beginners & IntermediateJ2EE Programmers
Tham gia khóa học đầy đủ Sử dụng J2EE IDE, tùy lựa chọn Thử các IDE mã nguồn mở
NetBeans IDE (netbeans.org) Hỗ trợ J2EE rất tốt Có rất nhiều tutorials
Eclipse
Bước 2: Cho Advanced J2EE Programmers
Tìm hiểu các giải pháp mã nguồn mở Spring framework (for light-weight framework) Hibernate (for O/R mapping) JDO (for transparent persistence) Struts, WebWork, Tapestry (for Web-tier
frameworks) JUnit (for unit testing) Log4j (for logging) ...
Tổng kết
8/28/2011
16
Tổng kết
J2EE là nền tảng để phát triển và triển khaicác ứng dụng doanh nghiệp hướng thànhphần, n-tier, web-based, transactional
J2EE là kiến trúc xây dựng theo chuẩn(standard-based architecture)
J2EE tất cả vì cộng đồng J2EE phát triển theo yêu cầu của thực tế
Resources
J2EE Home page java.sun.com/j2ee
J2EE 1.4 SDK java.sun.com/j2ee/1.4/download.html#appserv
J2EE 1.4 Tutorial java.sun.com/j2ee/1.4/download.html#appserv
J2EE Blueprints java.sun.com/blueprints/enterprise/index.html
NetBeans IDE Homesite http://www.netbeans.org