JOnAS – Open source J2EE server

JOnAS for Java Open Application Server.

JOnAS provides support of J2EE 1.4 including EJB 2.1, JTA 1.0.1, JDBC 3.0, J2EE CA 1.5, JMX 1.2, JNDI 1.2.1, JMS 1.1, JavaMail 1.3, Servlet 2.4, JSP 2.0, JAAS 1.0, JACC 1.0, Web Services 1.1, JAX-RPC 1.1, SAAJ 1.2, JAXR 1.0, J2EE Management 1.0, JAF 1.0, JAXP 1.2 specifications.

JOnAS 4.3.2 has been certified to be complied against Sun J2EE 1.4 Certification Test Suite

A project by ObjectWeb – Open Source Middleware.

Spring for Faster Java Enterprise

Better, Faster, Lighter Java by Bruce A. Tate, Justin Gehtland
เป็นหนังสือที่ว่า(ด่า) Java ว่า ยิ่งทำ ยิ่งเลอะเทอะ ยิ่งเต่า (bloated) โดยเฉพาะพวก enterprise application framework ทั้งหลาย ที่ทำออกมาใหญ่เทอะทะเกินความจำเป็น และทำให้เรียนรู้นานขึ้น เขียนยากขึ้น มากขึ้น แต่ได้งานเท่าเดิม (และอาจจะผิดมากกว่าเดิม) โดยพุ่งไปที่เป้าใหญ่ๆ อย่าง EJB (Enterprise JavaBeans) ว่าพยายามจะจับปลาสองมือ จะทำหลายๆ อย่าง ทำให้การออกแบบยุ่งเหยิง และ อืดเกินความจำเป็น ในหลายๆ งาน

หนังสือพยายามจะอธิบายว่า ความผิดมันไม่ได้อยู่ที่ตัวภาษา Java ว่ามันไม่ดี หรือว่าเฟรมเวิร์กมันห่วยแตก ใช้ไม่ได้เลย แต่อยู่ที่คนเขียนโปรแกรมนี่แหละ ที่แห่ตามไปใช้เฟรมเวิร์ก หรือเทคโนโลยีที่ฮิตๆ กัน โดยไม่ได้ดูเลยว่า มันเหมาะกับงานตัวเองรึเปล่า (คือจริงๆ EJB มันก็ดี แต่ไม่ใช่สำหรับทุกงาน เหมือนกับใช้ XML อ่านเขียนไฟล์คอนฟิก แค่ไม่กี่บรรทัด — คำพังเพยไทยคือ ขี่ช้างจับตั๊กแตน)

คนเขียน เป็นส่วนหนึ่งของทีมที่ทำ Spring ซึ่งก็เป็น Java enterprise/web application framework แบบโอเพ่นซอร์สอีกตัวนึง ซึ่งออกแบบมาอย่างระมัดระวัง ไม่ให้เป็นเหมือนที่ไปว่าคนอื่นเค้าไว้ — Spring นี่ มีตัวสำหรับ .NET ด้วย

เฟรมเวิร์กอีกตัวที่ดังๆ ก็คือ Apache Struts คนนิยมใช้กันเยอะ (กว่า Spring) พูดถึงเฟรมเวิร์กพวกนี้แล้ว คนเขียน Java มีทางเลือกให้เลือกมากมาย (จนบางทีก็ปวดหัว เยอะเกินไป) อย่างแค่ในโครงการ Jakarta ของ Apache เอง ก็มีตั้งหลายอัน เช่น Struts, Tapestry, Turbine หรืออย่าง JBoss ก็มีเสนอของตัวเองเหมือนกัน รวมถึงที่ขายอย่าง BEA WebLogic Platform, IBM WebSphere Application Server, Oracle Application Server, etc. .. กว่าจะเลือกได้ทีคงปวดหัว (พูดถึงโมเดลส่วนใหญ่ก็เป็น MVC คล้ายๆ กัน แต่ก็ต้องมีปัจจัยอื่นๆ ประกอบด้วย แล้วแต่งาน ความถนัด เวลา ทรัพยากร ฯลฯ)

ถ้าเขียนอะไรพวกนี้อยู่ แล้วมีความรู้สึกว่า ได้งานออกมาน้อยกว่าแรงที่ลง ก็ลองๆ ศึกษาทางเลือกใหม่ๆ ดู