Java ME, Java SE, Java EE แตกต่างกันอย่างไร

สำหรับนักพัฒนา Java มือใหม่หลายๆคนคงเคยได้ยินหรือได้เห็น J2..E หรือ Java ..E อะไรพวกนี้มาบ้างนะครับ

ไม่ว่าจะเป็น Java ME, Java SE หรือ Java EE ทั้งหลายเหล่านี้ ไม่ได้เป็นเทคนิค วิธีการ หรืออัลกอริทึมของภาษา Java แต่อย่างใดครับ เป็นเพียงแพคคนละขนาดเท่านั้นครับ อธิบายแบบบ้านๆก็คือ เหมือนเราไปเดินห้างของต่างๆก็จะมีแพครวม 4 ห่อบ้าง 6 ห่อบ้าง  หรือ 10 ห่ออะไรประมาณนี้ครับ ในภาษา Java ก็มีแพคให้เลือกตามนี้เลยครับ

ก่อนหน้านี้ ได้ใช้ชื่อ J2..E สำหรับแต่ละรุ่น  ดังนี้
J2ME : Java 2 platform Micro Edition
J2SE : Java 2 platform Standard Edition
J2EE : Java 2 platform Enterprise Edition

และได้มีเปลี่ยนชื่อใหม่ สำหรับ version ใหม่ โดยชื่อใหม่สำหรับแต่ละรุ่น คือ
Java ME : Java Platform, Micro Edition
Java SE : Java Platform, Standard Edition
Java EE : Java Platform, Enterprise Edition

สำหรับแต่ละรุ่นจะมี package ภายในแตกต่างกันออกไป ซึ่งขั้นอยู่กับความเหมาะสมว่าจะเลือกในตัวไหน โดยผมจะอธิบายเป็นลำดับตามขนาด package ของแต่ละ edition นะครับ

Java ME เป็นแพคที่เล็กที่สุดของ java platform ต่างๆ เหมาะสำหรับอุปกรณ์พกพา เช่น โทรศัพท์มือถือ PDA เป็นต้น จนหลายคนอาจเข้าใจผิดว่า M ในที่นี้หมายถึง Mobile หรือเปล่า? อีกคำถามที่หลายคนอาจสงสัยคือ Android ซึ่งเป็นระบบปฏิบัติการของ Smart Phone ที่ใช้พัฒนาด้วยภาษา Java คำถามคือ แล้ว Android ใช้ Java ME หรือเปล่า? คำตอบคือ ไม่ใช่ครับ เพราะว่าทั้ง 2 อย่างนี้ใช้ VM (Virtual Machine) คนละตัวกันครับ พูดถึง Java ME กันก่อน Java ME จะใช้ KVM ซึ่งเป็น JVM (Java Virtual Machine) ขนาดเล็กครับ สามารถทำให้ application รัน Java ได้ตามที่เราๆเข้าใจกันอยู่แล้ว แต่ในส่วนของ Android จะไม่ได้รันบน KVM ครับ เค้าจะใช้ DalvikVM ซึ่งเป็น VM ที่อยู่บน Linux kernel ครับ และตัว Android เองก็พัฒนามาจากฝั่ง linux นี่แหละครับ เพราะฉะนั้น library หรือ package ของ Java ME อาจใช้ไม่ได้กับ Android ก็เป็นได้ครับ

Java SE แพคที่ใหญ่ขึ้นมาอีกหน่อยครับ Java SE นั้นจะเป็นรุ่นมาตรฐานครับ เหมาะสำหรับ Desktop Application ครับ ซึ่งผู้ใช้คอมพิวเตอร์ทั่วๆไป ใช้ Java SE ก็เพียงพอสำหรับการรัน application ที่พัฒนาด้วยภาษา Java โดยส่วนประกอบสำหรับรุ่น standard ก็จะมี JDK (Java Development Kit) ที่ประกอบไปด้วย compiler และ debugger ของภาษา Java สำหรับนักพัฒนา JRE (Java Runtime Environment) ซึ่งเป็นสิ่งที่รวม library ต่างๆสำหรับการรันโปรแกรมที่พัฒนาด้วย Java ซึ่งถ้าติดตั้ง JDK เพียงตัวเดียวก็จะมี JRE รวมอยู่ด้วย

Java EE เป็นแพคที่ใหญ่ที่สุด แน่นอนว่าถ้าใหญ่กว่า Java SE ทุกๆอย่างที่มีใน Java SE ก็จะต้องติดมาด้วย แต่ส่วนที่มีเหนือกว่าใน Java EE คือ เทคโนโลยีต่างๆ สำหรับการพัฒนาแอพพลิเคชั่นบนฝั่ง Server เช่น JSP(JavaServer Pages), Java Servlet, JDBC(Java Database Connectivity), Java Mail, EJB(Enterprise JavaBean), RMI(Remote Method Invocation), JTA(Java Transaction API), JMS(Java Messaging Service), JAAS(Java Authentication and Authorization Service) และอื่นๆ

เห็นแล้วนะครับว่า ความแตกต่างเป็นอย่างไร สำหรับนักพัฒนาควรนึกถึง platform ที่เราจะพัฒนาด้วย รุ่นที่ใหญ่ๆ มี API เยอะก็จริง แต่ถ้าเอาไปใช้กับอุปกรณ์หรือเครื่องที่มีความสามารถในการประมวลผลไม่เพียงพอ ก็จะทำให้การใช้งานแอพพลิเคชั่นนั้นๆไม่ได้ประสิทธิภาพเท่าที่ควร

ส่วนประกอบของ JDK


Facebook Comment

Popular post of 7 days

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding