Jakarta EE

เส้นทางใหม่ของ Java EE เริ่มต้นตั้งแต่ปี 2017 เมื่อ Oracle ตัดสินใจยก Java EE ให้ Eclipse Foundation ดูแล ภายใต้ชื่อแบรนด์ใหม่ว่า Jakarta EE เพราะ Oracle ยังถือเครื่องหมายการค้า Java อยู่ (Java SE ยังเป็นของ Oracle)

ตอนนี้โครงการ Jakarta EE มีโลโก้ใหม่และเว็บไซต์ของตัวเองเป็นที่เรียบร้อย แต่ก็เจออุปสรรคสำคัญที่จะทำให้แอพพลิเคชันที่เขียนบน Java EE ในอดีต ไม่สามารถรันบน Jakarta EE ในอนาคตได้

แกนกลางของปัญหานี้เกิดจากการระบุชื่อแพ็กเกจ javax.* ที่ใช้ในโลกของ Java EE มาโดยตลอด 20 ปีที่ผ่านมา (Java EE ออกเวอร์ชันแรกในปี 1999 พอดี สมัยนั้นยังใช้ชื่อ J2EE) แอพพลิเคชันทุกตัวที่เขียนบน Java EE ต่างต้องอ้างชื่อ namespace ขึ้นต้นด้วย javax ทั้งหมด

ปัญหาคือชื่อ javax เป็นกรรมสิทธิ์ของ Oracle และ Oracle ก็อนุญาตให้โครงการ Jakarta EE สามารถใช้ชื่อ javax ได้ ตราบเท่าที่โครงการ Jakarta EE ไม่ดัดแปลงแก้ไขแพ็กเกจ javax ใดๆ เพียงกรณีเดียวเท่านั้น

นั่นแปลว่าโครงการ Jakarta EE ที่เปรียบเสมือนการ fork ซอร์สโค้ดของ Java EE ไปพัฒนาต่อ ต้องเลือกระหว่าง

  • ไม่ปรับปรุงแก้ไขแพ็กเกจ javax อีกเลย เพื่อรักษาความเข้ากันได้กับแอพพลิเคชันในอดีต (backward compatibility) ข้อเสียคือแพ็กเกจ javax จะไม่ถูกพัฒนาใดๆ อีก
  • ปรับปรุงแก้ไขแพ็กเกจ javax ให้เข้ากับยุคสมัย แล้วเปลี่ยนไปใช้ชื่อใหม่ jakarta.* ซึ่งจะสูญเสียความเข้ากันได้กับแอพพลิเคชันเก่าจำนวนมหาศาล

การเปลี่ยนชื่อ namespace จาก javax.* เป็น jakarta.* จะทำให้แอพพลิเคชันเก่าต้องถูกแก้ไขซอร์สโค้ดเพื่อเปลี่ยนชื่อตามทั้งหมด ไม่สามารถนำไปรันบน Jakarta EE ได้ตรงๆ อีกแล้ว จุดเด่นของแพลตฟอร์ม Java ที่ว่า Write Once Run Anywhere ก็จะไม่เป็นความจริงอีกต่อไป

สถานะตอนนี้ของโครงการ Jakarta EE คือจะรีบออก Jakarta EE 8 ที่เข้ากันได้กับ Java EE 8 ที่ออกในปี 2017 โดยไม่มีการเปลี่ยนแปลงทั้งในแง่ของ namespace และ API (ส่วนใหญ่คือเปลี่ยนข้อความที่อ้างถึง Java เป็น Jakarta ด้วยซ้ำ) และ Jakarta EE 8 ถือเป็นรุ่น LTS ที่มีอายุซัพพอร์ตยาวนานไปจนถึงปี 2028 ดังนั้น แอพพลิเคชันเดิมของ Java EE 8 จะสามารถรันบน Jakarta EE 8 ได้อย่างไม่มีปัญหาไปอีกนานเกือบสิบปี

แต่เมื่อโครงการ Jakarta EE เริ่มพัฒนาเวอร์ชันใหม่ในแนวทางของตัวเองที่ไม่ต้องอิงกับ Oracle (เช่น Jakarta EE 9 รุ่นถัดไป ซึ่งยังไม่มีแผนว่าจะออกเมื่อไร) ก็จะเกิดปัญหาขึ้นมาทันทีหากเปลี่ยน namespace เพราะแอพพลิเคชันเดิมจะไม่สามารถรันบน Jakarta EE 9 ได้

ตอนนี้ Eclipse Foundation ยังไม่มีความชัดเจนในเรื่องนี้ (ต้องรอโหวตผ่านกระบวนการภายในขององค์กร) แต่ก็มีนักพัฒนาบางส่วนเรียกร้องให้ "หัก" เปลี่ยนชื่อแพ็กเกจทั้งหมดจาก javax เป็น jakarta ยอมพังครั้งเดียวแล้วสบายไปตลอดในอนาคตเช่นกัน

ที่มา - Eclipse Foundation, Oracle, Jakarta EE, Payara Blog

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

แต่การเลือกครั้งนี้ก็อาจทำให้คนหั่นหาไปสนใจ .NET มากกว่าไหมเพราะเริ่มต้นใหม่เหมือนกัน แถมฝั่งนั้นเจ้าขอโปรดักส์อย่างไมโครซอฟท์ก็ช่วยผลักดันเต็มที่ แทบจะเอา .NET ตัวเก่ามารันได้เกือบครบแล้ว ถ้าจะเริ่มใหม่ไป .NET ก็มีข้อดีอย่าง Proformance ก็ดีกว่า ระบบก็ทันสมัยกว่า เชื่อมต่อกับโปรดักส์ของไมโครซอฟท์ และเจ้าอื่นได้ง่ายกว่า แม้แต่ IDE ยังดีกว่า ชีวิตอาจจะดีกว่านะ
ปล. แค่ ASP.NET เชื่อมกับ Azure แล้วในร่วมกับ Application Insight สำหรับผมสาย Dev ก็กินขาดแบบโคตรๆ Track การทำงานได้ทุก Event ทุก Error ดูรายละเอียดแต่ function ที่ทำงานแถมวัด Performance ให้เสร็จสับว่าไปช้าที่ส่วนไหน แก้ไขปัญหาความล่าช้าได้ทันที

มันก็ไม่เหมือนเริ่มต้นใหม่นะครับ แค่เปลี่ยน namespce จาก javax -> Jakarta แค่นั้นเอง replace ทีเดียวก็หมดล่ะ เพียงแค่ว่า ถ้า app ที่ส่งให้คนภายนอกใช้ จะไม่สามารถระบุได้ว่า คนใช้ runtime ตัวไหน อาจจะต้อง เบิ้ล class โดยตัวนึง import jakarta อีกตัว import javax