Java Enterprise Edition (J2EE)
สวัสดีครับ ก่อนที่จะไปรู้จักกับ Java Enterprise Edition หรือ J2EE เรามาดูกันก่อนว่า Java plaform นั้นคืออะไร มีอะไรบ้างเรามาเริ่มกันเลย
Java platform คืออะไร ?
Java platform เกิดจาก 2 คำรวมกัน คำแรก Java ซึ่งเป็น programing language กับ platform ซึ่งเป็นฮาร์ดแวร์ หรือซอฟแวร์ ที่ทำงานประสานกัน รวมกันก็จะเป็นฮาร์ดแวร์ หรือซอฟแวร์ที่ทำงานด้วยภาษาจาวา โดยจาวาแพล็ตฟอร์ม มีทั้งหมด 3 แพล็ตฟอร์มดังนี้
- Java ME : Java Platform, Micro Edition
เป็นแพคที่เล็กที่สุดของ 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 ก็เป็นได้ครับ
2. Java SE : Java Platform, Standard Edition
แพคที่ใหญ่ขึ้นมาอีกหน่อยครับ Java SE นั้นจะเป็นรุ่นมาตรฐานครับ เหมาะสำหรับ Desktop Application ครับ ซึ่งผู้ใช้คอมพิวเตอร์ทั่วๆไป ใช้ Java SE ก็เพียงพอสำหรับการรัน application ที่พัฒนาด้วยภาษา Java โดยส่วนประกอบสำหรับรุ่น standard ก็จะมี JDK (Java Development Kit) ที่ประกอบไปด้วย compiler และ debugger ของภาษา Java สำหรับนักพัฒนา JRE (Java Runtime Environment) ซึ่งเป็นสิ่งที่รวม library ต่างๆสำหรับการรันโปรแกรมที่พัฒนาด้วย Java ซึ่งถ้าติดตั้ง JDK เพียงตัวเดียวก็จะมี JRE รวมอยู่ด้วย
3. Java EE : Java Platform, Enterprise Edition
เป็นแพคที่ใหญ่ที่สุด แน่นอนว่าถ้าใหญ่กว่า 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) และอื่นๆ
สำหรับการเขียนโปรแกรมทั้ง 3 แบบนั้น syntax ก็จะเป็นเหมือนกันหมดเพราะเป็น Java เหมือนกันอาจจะต่างกันนิดหน่อยตรง lib ต่างๆที่ทำเข้ามาเสริมใน Platform นั้นๆ โดยการพัฒนา Java ทั่วไปแล้วเราจะใช้ JDK (Java Development Kit) ซึ่งจะมีทั้ง compiler ,debugger และ JRE (Java Runtime Environment) รวมไว้ให้เราได้ใช้งานอย่างสะดวกสบายอยู่แล้ว
แต่ใน blog วันนี้เรามาจะดูเกี่ยวกับ Java EE กันครับ
Java EE ในปัจจุบัน
อย่างที่คุณทราบ Java เป็นแพลตฟอร์มคอมพิวเตอร์ที่ต้องอาศัยการเขียนโปรแกรมเชิงวัตถุหรือ OOP เมื่อมันถูกสร้างขึ้นครั้งแรกสำหรับอินเทอร์เน็ตโดย Sun Microsystems ในปี 1995 Java เป็นทางแก้อาการปวดหัวจากภาษาการเขียนโปรแกรมอื่น ๆ เช่น ภาษา C ++ ในการออกแบบแอปพลิเคชันแบบสแตนด์อโลน
ในช่วงปี 90 Java ได้ถูกนำเสนอแก่นักพัฒนาซอฟต์แวร์ที่ยินดีที่จะข้ามแพลตฟอร์ม ในตอนแรกได้รับการออกแบบให้มีการพึ่งพาการใช้งาน dependencies น้อยที่สุดเท่าที่จะเป็นไปได้ ซึ่งนำไปสู่คำว่า“ เขียนครั้งเดียวทำงานได้ทุกที่” (write once,run everywhere: WORA) ซึ่งหมายความว่าโค้ด Java ที่คอมไพล์แล้วสามารถรันได้บนทุกแพลตฟอร์มโดยไม่จำเป็นต้องคอมไพล์โค้ดใหม่ นอกจากนี้แอพพลิเคชั่นที่ใช้ Java เป็นที่รู้จักกันดีในเรื่องความเร็วและความสามารถในการปรับขยายตัว
แต่ภายในปี 2010 ทั้ง ๆ ที่มีองค์กรขนาดใหญ่ที่ใช้ Java EE เพื่อเขียนเว็บแอปพลิเคชัน เพิ่มจำนวนขึ้น Forrester เรียกมันว่า “จุดจบ” สำหรับธุรกิจองค์กร โดยแนะนำให้พวกเขาค้นหาเทคโนโลยีใหม่ ๆ เพื่อเอาชนะความซับซ้อนและความไม่ยืดหยุ่นของแอพพลิเคชัน Java
ในขณะที่ Java ยังคงใช้งานกับเว็บแอปพลิเคชั่นบางตัวในปัจจุบัน เป็นความจริงที่ว่าองค์กรธุรกิจจำนวนมากได้ทำการเปลี่ยนแปลงไปสู่แนวทางที่คล่องตัวขึ้น เพื่อส่งมอบแอปพลิเคชั่นบนคลาวด์ได้เร็วขึ้น
นอกจากนี้แพลตฟอร์มการจัดการ Container และ PaaS กลายเป็นสิ่งที่พบเห็นได้ทั่วไปมากขึ้น
สำรวจเทรนด์ต่างๆของการพัฒนาองค์กร
การพัฒนาแอพพลิเคชั่นระดับองค์กรในสภาพแวดล้อมทางธุรกิจที่มีการแข่งขันในปัจจุบัน ยอมรับเรื่องการ deploy ว่ามีความสำคัญยิ่งกว่าที่เคยมีมา ในความเป็นจริงคุณอาจทราบแล้วว่าองค์กรไอทีที่มีประสิทธิภาพสูง deploy แอปพลิเคชั่นหลายครั้งต่อวันเมื่อ เทียบกับองค์กรที่ deploy เดือนละครั้ง หรือทุก ๆ หกเดือน
หากธุรกิจใดไม่ได้เขียนซอฟต์แวร์เพื่อการใช้งานเอง พวกเขากำลังนำโปรแกรมไปสู่ตลาดมือถือสำหรับผู้ใช้ที่เป็นผู้บริโภค
ในหลายครั้ง ธุรกิจองค์กรพบว่าพวกเขากำลังทำทั้งสองอย่าง ดังนั้นการย้ายจากมุมมองดั้งเดิมของไอที ไปสู่วัฒนธรรมที่รวมสู่ศูนย์กลางอยู่ที่ DevOps และ เพื่อให้ continuous delivery ไม่มีสะดุด
ในทางกลับกันการเปลี่ยนกระบวนทัศน์ (paradigm shift ) นี้ ได้ปูทางสำหรับเทคโนโลยีใหม่และแนวโน้มการพัฒนาองค์กร แนวโน้มการพัฒนา 2018 ก่อให้เกิดความท้าทายสำหรับการพัฒนาในอนาคตของ Jakarta EE:
มุ่งเน้นที่ความปลอดภัย
จากการเปลี่ยนความดูแลมาที่ Eclipse Foundation จะมั่นใจในความปลอดภัยแพลตฟอร์มใหม่บน Java ได้อย่างไร นี่คือคำถามที่ติดค้างในใจของนักพัฒนาจำนวนมาก เนื่องจากเรื่อง multi-cloud environments และ integrations กำลังคุกคามความปลอดภัยสำหรับธุรกิจองค์กร
เพื่อให้เกิดความสามารถในการแข่งขัน Jarkata EE จะต้องมีนวัตกรรมที่มุ่งเน้นการทำให้แอปพลิเคชันปลอดภัยจากภัยคุกคามทางไซเบอร์
Progressive Web Apps (PWAs)
จากที่ PWA หรือเว็บไซต์ที่ทำงานได้ทั้งออนไลน์และออฟไลน์แบบแอพมือถือ เข้ายึดโลกธุรกิจสำหรับองค์กร Java เว็บแอปจะแข่งขันอย่างไร
ปัจจุบัน Java อินสแตนซ์ก็มีเทอะทะกว่า พวก lightweight platform ที่ใช้ในการเขียนโค้ดบนคลาวด์แล้ว แต่ Jakarta หวังจะเอาชนะข้อเสียที่ใหญ่ที่สุดนี้ โดยมุ่งเน้นที่การพัฒนาระบบคลาวด์แต่แรก
การพัฒนาส่งต่อไปยังผู้ใช้
การพัฒนากำลังเปลี่ยนไปสู่ผู้ใช้เพื่อสร้างประสบการณ์การใช้งานแอพระดับองค์กรที่กำหนดเองโดยสมบูรณ์มากขึ้นเรื่อย ๆ ซึ่งเป็นส่วนหนึ่งของ container PaaS และแพลตฟอร์มการพัฒนาบนเว็บอื่น ๆ
นักวิเคราะห์ Java อาจสงสัยว่า Jakarta จะสามารถตอบสนองความต้องการนี้ได้หรือไม่?
อินสแตนซ์ดั้งเดิมของ Java ต้องการความรู้เชิงลึกเกี่ยวกับภาษาการเขียนโปรแกรมและความสามารถด้านเทคนิค แต่แนวโน้มสำหรับแอพพลิเคชั่นที่จะง่ายขึ้นเรื่อยๆ เพื่อให้เข้ากับตลาดได้หลากหลาย การนำหน้าการแข่งขันเกิดจาก การวางแผนพัฒนาให้เหมาะสมกับผู้ใช้
โอกาสในการเติบโต
นวัตกรรมเช่น blockchain และ Internet of Things เริ่มส่งผลกระทบต่อชีวิตประจำวันของผู้ใช้ แพลตฟอร์มการพัฒนา Java ใหม่ๆ จึงควรมีความยืดหยุ่นเพื่อพร้อมที่จะเติบโต
ยังคงเห็นได้ว่า Java สามารถกลับมาอีกครั้งโดยตอบสนองความต้องการของตลาดองค์กรที่เปลี่ยนแปลงไป ด้วยการดูแลภายใต้ Eclipse Foundation เราควรคาดหวังที่จะได้เห็นนวัตกรรมใหม่
Open Source
เมื่อไม่กี่ปีผ่านมานี้ เทคโนโลยี Open source ได้รับการยอมรับอย่างกว้างขวางในหลาย ๆ ด้าน ซึ่งรวมถึงการจำลองเสมือนการประมวลผลขั้นสูง ระบบปฏิบัติการ ฐานข้อมูล เว็บเซิร์ฟเวอร์และอีกมากมาย โดยมีความต้องการที่ชัดเจนอย่างต่อเนื่องในการเป็นส่วนสำคัญของนักพัฒนาในปัจจุบัน Eclipse foundation ตั้งใจที่จะให้ความสำคัญต่อชุมชน Open source สำหรับ Jakarta EE
Eclipse foundation และอนาคตของ Java Enterprise
ตัวชี้วัดทั้งหมดชี้ให้เห็นว่า Eclipse Foundation มุ่งเน้นไปที่การนำ Java ไปสู่คลาวด์เพื่อแข่งขันกับ Container และ PaaS
เหตุผลที่ Oracle ปล่อยการบริหาร Java ให้แก่ Eclipse Foundation นั้นเป็นกลยุทธ์ เป้าหมายคือการใช้ Java ซึ่งเป็นแพลตฟอร์มในปัจจุบัน ที่เป็นศูนย์กลางในการดำเนินงานขององค์กรจำนวนมาก และยังรักษาส่วนเดิมไว้โดยการอนุญาตให้ Eclipse Foundation มุ่งเน้นไปที่นวัตกรรมที่ทันสมัย
Eclipse Foundation คาดว่าจะศึกษา MicroProfile อย่างละเอียด ซึ่งเป็นกลยุทธ์เพื่อทำให้ Jakarta EE เบาขึ้นและพร้อมรองรับระบบคลาวด์
วิสัยทัศน์คือการสร้างแพลตฟอร์มคลาวด์ที่นักพัฒนา Java ไม่จำเป็นต้องรู้ snippet ทั้ง 30 ภาษาเพื่อสร้างหนึ่งโปรแกรม แต่พวกเขาสามารถเขียนโค้ดจากภาษาที่คุ้นเคยเช่น Jakarta EE กับนักพัฒนาซอฟต์แวร์ที่มีประสบการณ์การใช้ Java การให้บริการระบบคลาวด์ แต่นักวิจารณ์สงสัยว่าการเพิ่มแพลตฟอร์มใหม่เช่นนี้หมายความว่าพวกเขาต้องรู้จักภาษา 31 แทนที่ต้องรู้เพียง 30 หรือไม่
ตามคำสั่งโดยคณะกรรมการบริหารโครงการ Eclipse EE4J คาดว่าชุมชน Open source จะยอมรับการเปลี่ยนแปลงเหล่านี้โดยนำเสนอเทคโนโลยีที่สามารถนำไปใช้กับแพลตฟอร์มดังต่อไปนี้:
- Docker
- NoSQL
- Kubernetes
สิ่งนี้ทำให้นักพัฒนามีทางเลือกในการใช้เทคโนโลยีที่มีมาตรฐานสำหรับสร้างเว็บแอพพลิเคชั่นและฐานข้อมูลในแพลตฟอร์ม Jakarta EE
ดังที่ได้กล่าวมาแล้ว Java EE ได้กลายมาเป็น Jakarta EE ในปี 2018 ภายใต้การนำของ The Eclipse Foundation ในวันนี้ได้มีต่อใบอนุญาต Java จาก Sun และ Foundation ซึ่งอยู่ในขั้นตอนการพัฒนาของ Jakarta EE มีการดำเนินการมากกว่า 30 โครงการโดยใช้ทรัพยากรของ Foundation และเตรียมความพร้อมสำหรับการจัดส่งทั้งหมดในครั้งเดียว เป้าหมายคือการสร้างการใช้งานที่เข้ากันได้ซึ่งเกินกว่าความเข้ากันได้ของเทคโนโลยีปัจจุบัน (TCKs) สำหรับ Java EE 8 CTS
นอกเหนือจากโครงการใหม่ 39 โครงการและ 110 repositories จากการรายงานว่ามากกว่าครึ่งหนึ่งเป็นโครงการที่เสร็จสมบูรณ์แล้ว Jakarta EE ต้องเผชิญกับความท้าทายหลายอย่างก่อนที่จะถึงเปิดตลาด รวมถึงการตรวจสอบใบอนุญาตและการแก้ไขข้อผิดพลาดทั้งหมดก่อนจะนำไปใช้จริง
จากที่คุณเห็นว่ายังมีอีกหลายวิธีที่นักพัฒนาจะมี Java รุ่นที่จับต้องได้บนคลาวด์สำหรับองค์กร แต่ดูเหมือนว่า Eclipse Foundation จะมั่นใจได้ว่าการพัฒนานี้ จะช่วยพัฒนาชุมชนโปรแกรมเมอร์บนคลาวด์ได้
สุดท้ายนี้: บอกลากับ Java ที่เราเคยรู้จัก
นับตั้งแต่เริ่มก่อตั้งในปี 1990 จนถึงการถือกำเนิดของแอปพลิเคชั่นอินเทอร์เน็ตและ OOP นั้น Java เป็นผู้นำในด้านเทคโนโลยีเขียนโปรแกรมระดับองค์กร และถึงแม้จะมีผู้เชี่ยวชาญบางคนเรียกมันว่าสิ่งประดิษฐ์ แต่มันยังไม่ได้ถูกขับออกไปในฐานะศูนย์กลางในการประยุกต์ใช้แอพพลิเคชั่นสมัยใหม่
เป็นเพราะ Java มีมาตรฐานข้ามแพลตฟอร์มสำหรับนักพัฒนาเพื่อสร้างแอปพลิเคชันที่สมบูรณ์และมีประสิทธิภาพสำหรับลูกค้าภายในและภายนอกเพื่อใช้งานในแต่ละวัน
แต่เมื่อมีการเปลี่ยนแปลงไปสู่การส่งมอบที่ต่อเนื่องอย่างรวดเร็ว ก็ไม่น่าแปลกใจมากนักที่ Java มีปัญหาในพัฒนาให้ทันการเปลี่ยนแปลงใหม่ๆ
อย่างไรก็ตาม สิ่งต่าง ๆอาจจะเปลี่ยนไป Eclipse Foundation เข้าสู่ตลาดด้วยความโด่งดังจาก Jakarta EE การใช้ Jakarta EE และเป็นไปได้ว่านักพัฒนาที่คุ้นเคยกับ Java สามารถทำหน้าที่หลายอย่างเช่นเดียวกับที่ทำกับแพลตฟอร์ม Container และ PaaS Eclipse Foundation เองกล่าวว่าภารกิจของ Jakarta EE คือ“ ยิ่งเป็นที่รู้จักมากขึ้นเท่าไร นักพัฒนาจะเข้ามามีส่วนร่วมมากขึ้น และทำให้ชุมชนกลับมาเชื่อในแพลตฟอร์มนี้อีกครั้ง”
ดูเหมือนมีอนาคตจะมั่นคง แต่ก็จะมีเพียงเวลาเท่านั้นที่ตอบว่าภาษาใหม่ประสบความสำเร็จ แล้วถึงเวลาที่จะเปลี่ยน แน่นอนว่าในขณะนี้ยังไม่มีความเห็นเป็นเอกฉันท์ว่าสิ่งใดที่ส่งผลกระทบต่อชุมชนการพัฒนาแอพฯระดับองค์กร ในขณะที่ผู้พัฒนาแอพเตรียมพร้อมแล้ว สำหรับ blockchain, IoT และนวัตกรรมอื่น ๆ