Java EE Developer ျဖစ္လာဖုိ႔ဆုိတာထက္ Java သမားတစ္ေယာက္အေနနဲ႔ ေလ့လာလုိ႔ရႏုိင္တဲ့ Scope အတုိင္းအတာကုိ ေရးလုိက္တာပါ။
Java SE
JavaEE Learning Pathနဲ႔ပတ္သတ္ၿပီးေျပာရမယ္ဆုိရင္ အရင္ဆံုး JavaSEကုိ OOP အတုိင္းအတာေကာင္းေကာင္းသိၿပီဆုိတာနဲ႔ EE ဘက္ကုိသြားလုိ႔ရပါၿပီ။ Desktop Applicaiton Development ကုိစိတ္မ၀င္စားရင္ေတာ့ Swing ေတြ SWT ေတြ FX ေတြေလ့လာစရာမလုိပါဘူး။ JavaEE backend နဲ႔ Frondend Client ကုိ web ေနမလုိအပ္မယ္ဆုိရင္ေတာ့ ေရးပဲ Desktop Client အေနနဲ႔ေလ့လာထားတာမမွားပါဘူး။ JavaFX ကုိေပါ႔။
Java Web Profile
ဒီေနရာမွာဆုိရင္ JavaSE ကမကုန္ေသးပါဘူး။ Java8 ရဲ႕ Lambda Programming ေတြ Stream ေတြ Functional Style နဲ႔ေရးလုိ႔ရတာေတြ Design Pattern ေတြကုိေလ့လာလုိ႔ရေသးပါတယ္။ ဒါေပမဲ့ EE လုပ္ရင္းနဲ႔ျဖည့္ရမဲ့အရာေတြဆုိေတာ့ ခဏေက်ာ္ထားလည္းရေသးတယ္။ ဒါၿပီးရင္ JavaEE ကုိမကုိင္ခင္ JavaWeb နဲ႔ပါတ္သတ္တာေတြစေလ့လာရပါမယ္။ Java EE မွာပါ၀င္တဲ့အရာေတြကုိ Intro အေနနဲ႔သိထားသင့္တာေလးေတြ ဖတ္ရံုဖတ္ထားပါ။ Java Web Application တစ္ခုရဲ႕ Structure ေတြ နားလည္လာပါလိမ့္မယ္။
အဓိကကေတာ့ Serverlet, JSP, Expression Language, Web Application Security ေတြကုိေလ့လာပါ။ Database နဲ႔ပါတ္သက္လုိ႔ကေတာ့ JDBC ေလာက္ေလ့လာၿပီး Web App ေလးေတြ ေရးလုိ႔ရပါၿပီ။ ဒါနဲ႔ တစ္ခ်ိန္တည္းမွာပဲ HTML, CSS, JavaScript ကုိ သံုးရမွာဆုိေတာ့ ေလ့လာထားရပါဦးမယ္။ CSSအတြက္ Bootstrap ဒါမွမဟုတ္ Material Design Framework တစ္ခုခုကုိ သံုးတတ္ရင္အုိေကပါတယ္။ အစအဆံုးေရးစရာမလုိေအာင္ Freee Template ေတြ အမ်ားကုိရွိပါတယ္။ JavaScriptအနည္းငယ္သံုးမယ္ဆုိေတာ့ jQuery ကုိအေျခခံေလာက္သိရင္ရၿပီ။
အုိေကဒီထိေရာက္လာမွသာ Java နဲ႔ Web App ေတြေရးႏုိင္မွာပါ။ MVC ကုိစဖတ္သင့္ပါၿပီ။ အခုကစၿပီး Framework ေတြစသံုးၾကည့္ၾကမယ္။ က်ေတာ္ကေတာ့Struts2ကုိ စလုပ္ျဖစ္ခဲ့တယ္။ Play, Grails လုိမ်ဳိး အျခားေသာ Framework ေတြလည္းရွိပါတယ္။ ဒီမွာတင္ပဲ Java Web သမားတစ္ေယာက္အေနနဲ႔အမ်ားႀကီး ေရးလုိ႔ရေနပါၿပီ။ JDBC ေလာက္နဲ႔ဆုိ မလုိပဲ code ေတြေရးေနရေတာ့ Database နဲ႔ပတ္သတ္ၿပီး ORM Framework တစ္ခုခုကုိေလ့လာသင့္ေနပါၿပီ။ Sorry ဗ်ာ အေရးႀကီးတာက်န္သြားတယ္။ SQL လည္းသိထားဦးမွာဗ်။ RDBMS တစ္ခုခုသံုးႏုိင္ရပါမယ္။ MySQL, MariaDB, PostgreSQL ေတြထဲကတစ္ခုခုေပါ႔။ Oracle ကေတာ့ Enterprise ေတြမွာသံုးတာမ်ားတဲ့ product တစ္ခုဆုိေတာ့ OpenSource ထဲ့က ဆုိ MariaDB နဲ႔ PostgreSQL ကုိသံုးေစခ်င္ပါတယ္။ MySQL ကေတာ့ Oracle ပုိင္သြားကတည္းက Free နဲ႔ Commercial ေတြခြဲေပးထားေပမဲ့ သိပ္မသံုးေစခ်င္ပါဘူး။ ORM ဆက္ေျပာပါမယ္။ ORM ဘယ္အခ်ိန္မွာစသံုးသင့္လည္းဆုိေတာ့
●You have 3 or more programmers on a web application.
●Your database consist of 10+ tables.
●You have say 10+ queries to make.
ORM Frameworကုိသာသံုးခဲ့မယ္ဆုိရင္ SQL ကုိ ေမ့ထားလုိ႔ေတာင္ရေနပါၿပီ။ ဒါေပမဲ့ JDBC ကုိ ေကာင္းေကာင္းသိခဲ့မယ္ဆုိရင္ေတာ့ ORM သံုးရတာ အႀကိဳက္ေတြ႕မွာေတာ့ အမွန္ပါပဲ။ MyBatis, Hibernate, JPA စတာေတြက ORM Frmework ေတြထဲက တစ္ခုေပါ႔ဗ်ာ။ Java EE Feature set ထဲမွာ JPA ကတစ္ခုအပါအ၀င္ပါပဲ။
Java EE or Other Opensource
အုိေက အခုအေျခအေနေရာက္မွသာ JavaEE ဆုိတာႀကီးကုိ စစဥ္းစားသင့္ပါၿပီ။ Enterprise အဆင့္ Banking Aplication လုိမ်ဳိးေတြကုိ ေကာင္းေကာင္းႀကီး Handle လုပ္ႏုိင္ဖုိ႔ သံုးရတဲ့ Feature ေတြကနည္းတာေတာ့လည္းမဟုတ္ပါဘူး။ ဒီေနရာမွာ ကုိယ္ကစေရြးခ်ယ္သင့္ပါၿပီ။ JavaEE ကုိသြားမလား Spring ဘက္ကုိသြားမလား။ Spring ကုိ ေတာ္ရံု Web Application Framework တစ္ခုအေနနဲ႔ပဲေတာ့ မျမင္ေစခ်င္ပါဘူး။ ေတာ္ေတာ္ေလးကုိၿပီးျပည့္စံုတဲ့ Feature Set ေတြနဲ႔ JavaEE နဲ႔အၿပိဳင္ျဖစ္လာပါၿပီ။ အခု မိတ္ဆက္လာတဲ့ JavaEE8 လုိ႔ပဲေခၚရမလား တကယ္ေတာ့ Jakarta EE ဆုိၿပီး ျဖစ္သြားၿပီလုိ႔ထင္ပါတယ္။ သိပ္မသိလုိ႔ JavaEE7 ရဲ႕ Feature ေတြကုိပဲေရးပါရေစ။
JavaEE7
JavaEE7 မွာ ဘာေတြပါသလဲဆုိေတာ့......သံုးပုိင္းခြဲထားတာေတြ႕ရတယ္။
- Developer Productivity (Java EE7 - More Annotated POJO, Less Boilerplate Code)
- HTML (WebSockets, JSON, Servlet3.1 NIO, REST)
- Meeting Enterprise Demands (Batch, Concurrency, Simplified JMS)
Java EE 7 Specification ေတြကုိေတာ့.....
JSP 2.2
JSF 2.2
JAX-RX 2.0
Servlet 3.1
EJB 3.2
CDI 1.1
Managed Beans 1.0
Connector 1.6
JPA 2.1
Common ANnotations 1.1
JTA 1.2
Bean Validation 1.1
Interceptors 1.1
EL 3.0
Java Caching API
Concurrency Utilities
Batch Applications
Java API for JSON
Java API for WebSocket
ဟူး.... ဟုတ္ၿပီ ဒါေတြအကုန္သိဖုိ႔လုိလားဆုိေတာ့....လုိအပ္သေလာက္ပဲသံုးဖုိ႔လုိတာဆုိေတာ့ေအာက္ကဟာေတြကုိပဲအရင္ေလ့လာသင့္ပါတယ္။
1.Servlet 3.0 (Java Web Profile ေလ့လာတုန္းကသိၿပီးသားပါ။)
2.CDI 1.0
3.JSF (Struts2 ကုိမေလ့လာပဲ JSF ကုိပဲေလ့လာခဲ့ရင္ OK တယ္။)
4.EJB 3.0
5.JMS 2.0
6.WebSocket 1.0
7.Batch 1.0
8.JPA (ORM Framework)
Spring
Spring ကေတာ့ spring.io မွာပဲ ဆက္ေလ့လာၾကည့္ပါ။ တကယ္ေတာ့ Spring, Java EE ေတြမသြားခင္ Java Web Profile ကုိေကာင္းမြန္စြာသိဖုိ႔လုိတယ္ဆုိတာပါပဲ။ တျဖည္းျဖည္းခ်င္း Skills Set ကုိ ျမႇင့္ယူ တာသာအေကာင္းဆံုးျဖစ္ပါလိမ့္မယ္။
Others
ေနာက္တစ္ခုကေတာ့ JUnit, Mocking, Selenium စတဲ့ Testing ေတြ သိဖုိ႔လည္းလုိပါတယ္။ Java သမားအတြက္ JavaSE အရမ္းေကာင္းဖုိ႔လုိပါတယ္။ Advanced Level ေတြျဖစ္တဲ့ Memory Profiling, Web Performance, I/O Perfromance, CI (Jenkins) tool စတာေတြအမ်ားႀကီး ဆက္သြားလုိ႔ ရပါေသးတယ္။
Code Quality Analysing, Maven, Nexus, Git စတဲ့ အေျခခံ Knowledge ေတြ ရွိေနသင့္ပါတယ္။ Web Services Programming ျဖစ္တဲ့ SOAP, WSDL, XML, RESTစတာေတြလည္း ေလ့လာလုိ႔ရပါေသးတယ္။
ေနာက္ဆံုးအေနနဲ႔ Angular JS တုိ႔လုိ Javascript framework ေတြနဲ႔ JSF ကုိမသံုးပဲ တြဲဖက္ေရးလုိ႔ရတာေတြစတာေတြလည္း လုပ္ရင္လုပ္သေလာက္က်ယ္ျပန႔္လွပါတယ္။
သက္ဆုိင္ရာ Application Servers(Wildfly, GlassFish,...), Servlet Container(Tomcat, Jetty,...)ေတြ Dev Tool (Eclipse, Intellij, Netbean,...)ေကာင္းေကာင္းမြန္သံုးတတ္ရင္ Development Speed ေတြျမန္ႏုိင္တယ္။
ေနာက္ဆံုး Production အေနနဲ႔ Network Infrastructure ေကာင္းေကာင္းမသိရင္ေတာင္(PaaS, IaaS) Cloud Service Provider ေတြျဖစ္တဲ့ Amazon EC2, Azure တုိ႔ အေျခခံ Knowledges ေလးေတြ ရေအာင္ေလ့လာသင့္ပါတယ္လုိ႔ထင္ပါတယ္။
Web Profile ေလာက္နဲ႔ပဲျဖစ္ျဖစ္ Product ေကာင္းေကာင္းေလးေတြထြက္ဖုိ႔အေရးႀကီးပါတယ္။ ေနာက္တစ္ခုက ကုိယ့္ရဲ႕ Organization or Team မွာ ဘာေတြနဲ႔လုပ္ေနၾကလဲ၊ ေနာက္ၿပီး သူတုိ႔ရဲ႕ Technology Stack ကဘာလဲ ဘာေတြကုိသံုးရင္ ပုိေကာင္းလာမလဲ ပုိၿပီးျမန္ဆန္လာမလား၊ ကုိယ့္ကေကာ သူတုိ႔ကုိ ဘာေတြ Support ေပးႏုိင္မလဲ Team Work ကသာအေရးႀကီးတဲ့အတြက္ တစ္ေယာက္တည္းတုိးတက္တာထက္စာရင္ အားလံုးတူတူအရည္အခ်င္းရွိလာေနၿပီဆုိရင္ Product ေကာင္းေကာင္းထြက္လာဖုိ႔ ေသခ်ာတယ္လုိ႔ထင္ပါတယ္။