You must finish tutorial Part 1 & 2, before proceed to part 3
TUTORIAL: Create Clients (Java Client and JSF client) for web services; Part 3
•April 28, 2007 • Leave a CommentMulti-threading in Java
•April 27, 2007 • Leave a CommentSatu program boleh melaksanakan dua (atau lebih) action sama ada secara bersequence (One after another) atau secara selari (parellel). Dalam modus bersequence, jika satu program perlu memanggil (call) dua method dari kelas yang berbeza, method yang ke dua hanya akan dipanggil, setelah selesai method pertama di panggil dan selesai melaksanakan tugasnya. Dengan kata lain, program itu hanya mempunyai satu thread of execution.
Jika ada dua method yang yang tidak bergantung antara satu dengan lain, kita boleh mempercepatkan pelaksanaan dua method berkenaan, dengan cara memanggilnya dalam satu masa yang sama yang dipanggil multi-threaded.
Dalam contoh di bawah ada tiga kelas: MyPortal, StockServer dan NewServer. Kelas MyPortal adalah kelas utama yang mempunyai method satu submitResult yang mana ia akan dipanggil dari dua kelas lain (StockServer dan NewServer), dengan memberikan nilai String yang berbeza. Method pertama (MyPortal), akan create dua thread dari dua kelas(StockServer/NewServer) tadi (warna biru), dan melarikannya serantak, dengan method start (Warna merah).
Lihat contoh di bawah;
Kelas utama: MyPortal
import java.util.ArrayList;
public class MyPortal {
ArrayList dataToDisplay = new ArrayList();
public static void main(String args[]){
MyPortal mp =new MyPortal();
// Spawn the threads and pass them the referennce
// to the instance of MyPortal
NewsServer myNews = new NewsServer(mp);
Thread newsThread = new Thread(myNews);
StockServer myStocks = new StockServer(mp);
Thread stockThread = new Thread(myStocks);
//Start the threads
newsThread.start();
stockThread.start();
try {
System.out.println(“MyPortal is sleeping…!”);
Thread.sleep(10000); // wait for 10 sec
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“Good bye!”);
}
// Add the data returned by a thread to collection
public void submitResult(String data){
dataToDisplay.add(data);
// Print the data if both threads have submitted the data
// (a buggy version)
if (dataToDisplay.size()==2){
System.out.println(dataToDisplay);
}
}
}
Kelas ke dua: StockServer
public class StockServer implements Runnable {
MyPortal papa;
// Constructor
StockServer(MyPortal parent){
papa=parent;
}
public void run() {
// Sleep for 3 seconds to emulate some processing
// and return a string with the market data to the parent
try {
Thread.sleep(3000);
papa.submitResult(“The stock market is on the rise!”);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Kelas ke tiga: NewsServer
public class NewsServer implements Runnable {
MyPortal papa;
// Constructor
NewsServer(MyPortal parent){
papa=parent;
}
public void run() {
// Sleep for 4 seconds to emulate some processing
// and return a string with the news to the parent
try {
Thread.sleep(4000);
papa.submitResult(“We have good and bad news”);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
![]()
EJB 3.0
•April 27, 2007 • 2 CommentsEJB bermula dengan versi 1.0. Ia telah dilancarkan pada tahun 1999. Ia mempunyai Session Bean dan Entity Bean. Ia hanya mempunyai “Remote Interface“. Selepas itu EJB 2.0 telah dilancarkan pada tahun 2001, dan kemudian EJB 2.1 pada tahun 2003. Ia menambah komponen Message driven bean (MDB). “Local Interface” telah ditambah dan ia menyokong “web services” (Versi 2.1).
Tiada sebarang masalah pada EJB 2.1, malahan EJB 2.1 adalah “powerful” dan “portable”.
Namun begitu, beberapa ciri pada EJB 2.1 menyebabkan ia agak sukar untuk difahami dan mempunyai “leaning curve” yang panjang. Bagi yang baru dan mahir dalam Java pun menghadapai kesukaran memahami konsep EJB yang kelihatan kompleks. Ya memang benar EJB adalah kompleks. Selain itu, ia mempunyai banyak interface (Remote & local), file XML yang membingungkan (deployment descriptor), banyak file dalam satu komponen, barisan kod sumber (source code) yang panjang, method yang perlu ada dan tidak difahami, dan ia “heavy weight“.
Saya senarai perbezaan antara EJB 2.1 dan EJB 3.0.
1. Secara umumnya EJB 2.1 adalah kompleks dan agak sukar.
2. EJB 2.1 memerlukan lebih banyak baris coding berbanding 3.0, sehingga 50%
3. Callback method dalam EJB 2.1 tidak diperlukan dalam EJB 3.0
4. EJB 3.0 tidak memerlukan component interface (atau Home interface), ia hanya perlu business interface (Local @ Remote interface)
5. Throw exception tidak diperlukan dalam EJB 3.0
6. Deployment descriptor tidak diperlukan dalam EJB 3.0, tetapai digantikan dengan Metadata Annotation
7. EJB 3.0 adalah true Object Oriented, dengan itu EJB 3.0 menyokong inheritance, polimorphism dan Constructor.
8. JNDI tidak lagi diperlukan dalam EJB 3.0, tetapi digantikan dengan Depandancy Injection
10. EJB 3.0 boleh diuji di luar container.
HTML: Form submission method-GET Vs Post??? Part 2
•April 27, 2007 • Leave a CommentBagaimanapula hyperlink yang anda bina pada iFrame (contohnya), yang mana, bila diclick, ia akan submit data ke jsp page lain?
e.g. <a href=”proses.jsp?date=9/15/05&age=21″>age and time</a>
Adakah ia menggunakan GET atau POST method?
Dan bagaimana untuk mengatasi masalah tersebut?
Pada pandangan saya ada dua cara:
1. Elakkan guna link seperti diatas. Gunakanlah form yang method=post, gunakan hidden field dan ada submit button.
2. Atau Boleh juga guna Java Script pada link berkenaan, seperti:
<a href=”#” onclick=”document.getElementById(‘myForm’).submit();”>Submit form</a>
Tapi saya belum pernah cuba.
HTML: Form submission method-GET Vs POST???
•April 27, 2007 • 1 CommentUntuk form submission, ada dua method yang biasa digunakan, iaitu GET atau POST. Jika kita tidak tentukan method, by default, ia adalah GET. Method kita tentukan seperti berikut:
<form method=”GET’ action=”action.jsp”>
-
-
-
-
</form>
Adakah penting kita mengetahui perbezaan antara method GET dan POST?
Bilaka waktu yang sesuai kita menggunakan method GET dan method POST?
Berikut saya senaraikan perbezaan antara ke duanya.
1. By default, method adalah GET.
2. Jika method GET digunakan, data akan append pada URI, manakala submission dengan method POST akan menghantar data secara data stream.
3. Method GET menyebabkan data visible oleh user, so tak secure.
4. Method GET membolehkan user “bookmark” link yang mengandungi data berkenaan.
5. Method GET biasanya digunakan untuk Query yang bersifat “search” pada database, ia bagi kes system membenarkan user bookmark search berkenaan.
6. Method GET tidak sesuai untuk query yang akan mengubah database seperti update, delete dan insert dalam database. Sila gunakan method POST dalam hal ini.
7. Method GET menyebabkan hidden filed menjadi visible. So GET dalam kes ini tidak secure. Elok gunakan POST.
8. Spesifikasi HTML 4.0 menyatakan method GET adalah “deprecated”.
9. Submission data sensitive, penting atau rahsia perlu menggunakan method POST.
10. Dari segi saiz data, jika method GET digunakan, ia bergantung kepada server. Sesetengah server menerima sehingga 256 bytes sahaja, manakal maksima adalah 32kilobytes sahaja, jika lebih, ada data yang tidak sampai.
11. Banyak pendapat mencadangakan agar mengelakkan terus penggunaan method GET dan menggantikannya dengan method POST keseluruhannya.
12. Method POST mempunyai ciri-ciri security, iaitu ia tidak membenarkan user menggunakan “back button”. JIka penggunana menekan “bacl button”, warning berikut akan muncul: Warning: Page has expired.
AJAX: Example
•April 27, 2007 • Leave a CommentMungkin sukar untuk anda appreciate AJAX jika saya tidak mengemukakan contoh bagi anda melihat dan merasai sendiri the power of AJAX.
1. Writely (http://www.writely.com): Ia merupakan word processor berasaskan web. Sekarang ia merupakan sebahagian dari google. Namun begitu pendaftarannya di tangguhkan buat sementara untuk proses peralihan ke google. Anda boleh lawati laman web ini untuk melihat features yang ada yang mana ia menggunakan AJAX. Mungkin suatu hari nanti writely akan menggantikan Microsoft word???
2. Google Maps (http://maps.google.com/). Ini merukana contoh klasik AJX. Google lagi!
3. Google suggest (http://www.google.com/webhp?complete=1&hl=en). Ia merupakan sebahagian dari Google search. Jika anda taip perkataan atau key word untuk search, search engine akan terus membuat search secara asynchronous, dan anda akan dapat drop down hasil search tanpa menekan button search. Lagi satu google!!!
4. Instance Domain search (http://instantdomainsearch.com/). FUngsinya seperti google suggest.
5. Net Fix top 100 (www.netflix.com/Top100). Mose over dapat membantu untuk describe movie.
AJAX: Asynchronous JavaScript and XML
•April 27, 2007 • Leave a CommentMasalah utama dalam web-based application adalah UI yang tidak atau kurang user-friendly. Banyak solution telah diketengahkan bagi mengatasi masalah dalam penggunaan plain HTML sebagai UI. Ini termasuk penggunaan Dynamic HTML (yg merupakan extension kapada Java Script), java script sendiri, dan terkini adalah JSF. Penggunaan java applet nampak tidak begitu popular kerana ia menjadikan page heavy untuk load, dan isu security pada java applet. Microsoft telah memperkenalkan activeX yang mana ia merukan satu solution yang nampak agak menghampiri client-server application.
Namun begitu, semenjak saya mula membangunkan web-based application bermula pada tahun 2000 menggunakan PHP, saya rasa java script adalah cukup “powerfull” ciri-cirinya dan ia lebih mantap jika di gandingkan dengan DHTML. saya pernah menggunakan PHP, Java Script dan DHTML dalam membangunkan applikasi e-clinic dahulu. Sebab itu saya mencadangkan agar kita perlu explore AJAX dalam pembangunan UI untuk HIS, terutama untuk Electronic Medical Record. Jika anda mahu merasai AJAX, anda boleh lihat ia telah digunakan oleh Google Mail.
Antara ciri utama AJAX adalah, ia akan menghantar http request ke server, tanpa perlu “refresh” page, akan tetapi, hanya refresh data sahaja. Sudah pasti, anda tidak perlu “blink” bersama page yang sedang anda refresh. Dan ciri penting lain adalah ia menggunakan dokumen XML.
Bagi penggunaan dalam JSP, AJAX adalah sangat sesuai jika digabungkan dengan JSF. Jadi saya ingin mencadangkan agar kita perlu memahami dan mulai explore tiga teknologi berikut:
1) JSF (Java server face),
2) XML (extensible markup language) dan
3) AJAX(Asynchronous JavaScript and XML).
Bagi yang akan mengikuti kursus Java Script, pastikan anda kenal AJAX dahulu, kerana AJAX menggunakan teknologi Java Script. Oracle merupakan salah satu computer giant yang menyokong AJAX. Jadi tiada masalah jika menggunakan Jdevaloper 10g, tetapi perlu guna release 10.1.3. Sila lihat link di bawah untuk maklumat lanjut:
http://www.oracle.com/technology/pub/articles/cioroianu_jsfajax.html
http://developer.mozilla.org/en/docs/AJAX:Getting_Started
J2EE atau JEE 5?
•April 27, 2007 • Leave a CommentJ2EE
J2EE adalah shortform kepada Java 2 Enterprise Edition, yang merupakan satu set piawai dan spesifikasi (atau platform) yang telah dicipta dan di selenggara oleh Sun Microsystem. Ia bukanlah satu produk. Ini bermakna, sesiapa juga boleh membangunkan produk atau aplikasi yang compliant dengan J2EE dengan mengikuti spesifikasi J2EE. Sebagai satu platform yang bersifat Enterprise, J2EE menentukan komponen untuk perisian yang mana perisian tadi adalah berfungsi untuk kegunaan seluruh organisasi seperti aplikasi C-HEtS yang digunakan diseluruh HUKM.
J2ME dan J2SE
Selain itu, Sun Microsystem juga telah menyediakan dua lagi platform yang menyatakan arkitektur dan teknologi yang boleh digunakan untuk melarikan aplikasi pada persekitaran yang berbeza, iaitu J2ME (Java 2 Micro Edition) dan J2SE (Java 2 Standard Edition). J2ME menyatakan komponen yang perlu digunakan untuk aplikasi yang digunakan pada peralatan kecil dan portable, yang mempunyai memori yang minima seperti telefon selular dan PDA. Manakala J2SE menyatakan komponen yang digunakan untuk aplikasi yang dilarikan pada persekitaran desktop. Ia merangkumi bahasa pengaturcaraan Java yang diedarkan sebagai J2SE Development Kit (JDK).
J2EE mempunyai komponen dalam J2SE, seperti bahasa Java. Namun begitu, J2EE mempunyai komponen tambahan yang mampu dilaksanakan dan di deploy pada arkitektur multi-tier dan mempunyai teknologi web. J2EE adalah solution bagi aplikasi yang bersifat enterprise yang menggunakan teknologi web, seperti C-HEtS di HUKM.
JEE 5
Java 2 dalam J2EE adalah merujuk kepada versi 1.2 sehingga 1.4. Versi 1.4 adalah versi terakhir dalam J2EE. Sepatutnya, versi selepas 1.4 adalah 1.5. namun begitu, JCP (Java Community Process) telah menyatakan bahwa versi selepas 1.4 adalah versi 5.0, dan platform J2EE telah diberi nama baru, JEE versi 5.0, atau JEE 5. Antara komponen penting JEE 5 adalah JSF. JSF merupakan spesifikasi dalam JEE 5. Selain itu, JEE 5 juga menggunakan POJO (Plain Old Java Object), yang sangat ketara di gunakan dalam EJB 3.0.
Kesimpulan
Ini merupakan teknologi yang akan digunakan dalam pembangunan Fasa ke dua dan tiga dan seterusnya aplikasi C-HEtS. Selain itu, C-HEtS juga akan menggunakan HTB (Healthcare Transaction-Based) sebagai API yang akan mengikut piawai HL7 Versi 3.0. Untuk pembangunan seterusnya, anda perlu bergelumang dengan beberapa terminologi seperti JSF, ADF Faces, POJO, EJB 3.0, HL7 V3, Web services, BPEL dan sebagainya.
Apa yang saya faham mengenai SOA (Service Oriented Architecture)
•April 27, 2007 • 1 CommentPart 1
Service Oriented Architecture (SOA) merupakan satu konsep yang sedang hangat diperkatakan dan diperdebatkan dalam dunia IT beberapa tahun yang lepas. Ia merupakan paradigma dan konsep baru bagi mengoptimakan perkhidmatan yang berikan oleh sesebuah organisasi yang menggunakan teknologi IT agar dapat dimanfaatkan oleh organisasi lain yang memerlukannya, dengan mewujudkan sambungan (link), mengikut protokol tertentu antara organisasi berkenaan. Protokol tersebut merupakan sesuatu yang boleh diterima oleh semua organisasi di atas platform yang berbeza.
SOA perlulah diinspirasi oleh organisasi yang berasaskan manusia (human organization) dan seterusnya diterjemahkan kepada bahasa mesin dan teknologi. Perkhidmatan (service), perlulah dirujuk kepada fungsi organisasi berkenaan, yang boleh ditawarkan kepada organisasi lain. Perkhidmatan yang ditawarkan perlulah dikawal oleh satu polisi atau peraturan yang diwujudkan oleh organisasi berkenaan, atau badan lain bagi memastikan dan mengawal kualiti perkhidmatan berkenaan, dan yang penting sekali menentukan apakah perkhidmatan yang boleh diakses oleh organisasi lain.
Dari segi perkhidmatan, SOA adalah satu paradigma untuk pengaturan(organizing) dan penggunaan (utilizing) keupayaan yang teragih yang mungkin berada dibawah kawalan empunya domain yang berbeza. Keupayaan (capability) boleh dilihat sebagai perkhidmatan (service) yang diberikan oleh pelbagai organisasi yang berada pada lokasi yang berbeza. Sudah pasti, organisasi berkenaan, perlu memahami konsep SOA, bersedia(willing) untuk menyediakan perkhidmatan tertentu melalui konsep SOA, menyediakan kaedah tertentu untuk interaksi dengan organisasi lain-communication, memastikan perkhidmatan itu dapat dilihat (visible) oleh organisasi lain dan yang panting sekali, bersedia untuk berkongsi data dan maklumat dengan organisasi lain (Sharing). Berkongsi maklumat dan data, tidaklah mudah dan bersifat ‘plug n play’, kerana ia tidak sahaja melihat dari sudut syntax(struktur/format) sahaja, tetapi juga makna dan maksud (semantic) .
Dari segi teknologi, SOA dilihat sebagai satu evolusi dari Component-based architecture, Object Oriented (Interface-based design) dan sistem teragih (distributed system)-yang meliputi Internet dan J2EE……..
Part 2
Tiada persetujuan dari segi definisi SOA. Namun dari segi literalnya, ia adalah arkitektur yang yang bergantung dan berorientasikan kepada perkhidmatan (service). SOA bersifat “loosely coupled”, yang bermaksud pelaksanaannya adalah bersifat terbuka (open), dari sudut teknologi dan platform. Pada masa ini, organisasi yang bertanggungjawab terhadap SOA adalah OASIS(Organization for the Advancement of Structured Information Standards ) (http://www.oasis-open.org) yang bersifat non-profit. OASIS disokong oleh organisasi seperti BEA, IBM, SAP dan SUN. Namun begitu, terdapat juga kontroversi terhadap peranan yang diambil oleh OASIS dalam menetukan piawai e-business dan web-service. Ketiadak puasan hati ini adalah agar piawai tersebut tidak dikenakan lesen atau patent dan bersifat terbuka (open). Sila rujuk: http://perens.com/Articles/OASIS.html.
Part 3
SOA sebenarnya bukanlah satu konsep yang baru. Konsep SOA adalah serupa dengan teknologi yang telah ada pada DCOM (Distributed Component Object Model) dan ORBs (Object Request Brokers). DCOM adalah teknologi kepunyaan Microsoft, manakala ORBs adalah berasaskan CORBA, dan kepunyaan OMG (Object Management Group). Berikut adalah beberapa fakta berkenaan SOA:
i. SOA bukanlah web-service dan web-service bukanlah SOA. Tetapi web-service adalah implementasi terhadap konsep SOA.
ii. SOA adalah “loosely coupled” dan tidak bergantung antara satu dengan lain.
iii. Autonomous: Mengawal logic business secara encapsulated.
iv. Abstract: Logic business adalah tersembunyi dari pengguna perkhidmatan (service)
v. Boleh guna semula (reusable): Perkhidmatan yang boleh diguna semula.
vi. Boleh dijumpai (Discoverable): Perkhidmatan boleh dijumpai.
vii. SOA bukanlah web-services sahaja, ada teknologi lain yang boleh juga melaksanaan SOA.
HTB (Healthcare Transaction Base): Definitions
•April 27, 2007 • Leave a CommentFor Programmer
HTB provides a collection of Healthcare specific Java objects (EJBs) designed specifically to assist programmers that are coding healthcare applications. These Java objects are based on a Healthcare Specific Information Model called RIM designed by the HL7 organisation. Practically what it means is that once a designer gives the programmer the object model for the particular requested functionality, the individual objects do not have to be built by the programmer as they already exist. A programmer simply pulls it all together which after getting used to working this way it should mean increase in productivity, less bugs and better quality end applications. In the context of the larger architecture, HTB will be the central single point of truth clinical database on top of which all healthcare applications will be built ensuring a single version of the truth.
For System Architect
HTB is a clinical data repository that allows you to standardise the representation of your clinical data using the HL7 RIM standard. HTB is not a standalone system, it comes with the rest of the Oracle Development tools and all together they form a Healthcare specific development framework. From an architecture perspective it allows a system architect to design a single clinical-data-aware-database where all clinical data gets harmonized and standardised and on top of that a system architect can then design the multiple healthcare applications the hospital needs with the principal of many applications, one single data source! Also, because of the HL7 RIM standard, architects can tap into hundreds of men years of intellectual property development instead of recreating their own data model
For Medical doctor
HTB is a medical records repository that will help bring all clinical information that currently live in different systems together in one place. Whilst this may sound easy, technically it is not easy at all. HTB will make it easier to bring the information together in a meaningful way rather then just dump it all in one database which technically is easier but doesn’t produce meaningful results! Technical issues aside, at the end of the day HTB will hopefully mean better information about your patient at your fingertips when and where you need it.
-George Lemaris
