Java

Arsitektur Java Desktop Three Tier

0

Selama ini aplikasi desktop sebagian besar menggunakan arsitektur Client Server, dimana client akan langsung melakukan koneksi ke database. Konsep ini dipopulerkan oleh Microsoft bersama dengan platform VB. Konsep utamanya adalah meletakkan bisnis proses dan logic aplikasi di dalam server database lewat Stored Procedure dan Trigger.

Belakangan konsep client-server mulai mendapat tantangan dengan berkembangnya jaringan internet. Perusahaan ingin membuat aplikasi desktop namun kantor-kantor cabang tersebar di beberapa tempat, jika masih ingin menggunakan arsitektur client-server lewat jaringan internet, maka banyak sekali pertimbangan keamanan yang perlu diperhatikan, karena membuka port database di jalur internet bukanlah ide yang baik dari sisi security. Masalah lain adalah lisensi, banyak database vendor yang memberlakukan lisensi per user untuk menentukan harga lisensi. Dengan arsitektur client server, setiap client harus menggunakan user yang berbeda sehingga secara drastis menaikkan harga lisensi mana kala ada ratusan client terhubung ke server. Masalah lain yang muncul adalah jika client menggunakan koneksi dialup miskin bandwith, komunikasi client ke server akan sedikit terganggu (corupt). (more…)

Indo Java Podcast #8: Didiet said “Java Sucks!!”

2

Episode #8 indo java podcast terasa sangat istimewa dengan kedatangan Didiet (@lynkluna) dari mijix. Kita ngobrol panjang lebar kesana-kemari tentang platform java yang sucks big time. Banyak hal di platform java yang sekarang nyaris tidak relevan lagi digerus teknologi baru yang lebih baik. Misalnya Java Desktop yang kalah pamornya dibanding cocoa di mac atau GTK di linux, Java ME yang nasibnya tinggal menunggu waktu digerus sama Android. Praktis Java Platform hanya menyisakan Java EE saja.

Obrolan makin seru dengan membahas VM yang sekarang ada di pasaran, seperti interpreter-nya python, interpreternya PHP dan Ruby. Kemudian perbincangan menyerempet konsep Thread vs Fork-Join Process di Unix dan windows, dimana sebenernya di low level implementation JVM menterjemahkan Thread sebagai Light Weigth Process di *nix tetapi JVM tidak bisa menterjemahkan Thread menjadi Process di windows platform karena membuat process baru di windows cost-nya sangat tinggi. Inilah alasan utama kenapa Java multithreading mempunyai kinerja lebih tinggi di *nix platform dibanding di windows platform.

Obrolan beralih ke topik Synchronous vs Asynchronous Socket, dimana dulunya socket programming tidak mendukung synchronous excecution, karena model asynchronous socket itu susah sekali dihandling di dalam kode aplikasi, maka diperkenalkanlah synchronous socket, di java semua class di dalam java.io menerapkan synchronous socket. Application server java versi lama seperti tomcat 5 ke bawah menggunakan synchronous socket. Ternyata belakangan synchronous socket tidak disukai karena performancenya cenderung turun kalau request-nya sangat banyak. Diperkenalkanlah lagi konsep asynchronous socket, package java.nio menggunakan asynchronous socket, dan application server yang lebih baru seperti tomcat 6 ke atas menggunakan asynchronous socket, hasilnya kinerja tomcat 6 dengan load tinggi sangat stabil dan tidak ada gejala penurunan kinerja. Didiet juga mengutarakan kalau PHP tidak bisa menggunakan asynchronous socket, makanya didiet nggak ngefan dengan PHP :D .

#8 http://indo-java-podcast.googlecode.com/files/indo-java-podcast%238.mp3
- Java Sucks
- JVM dan VM lain
- Multithreading dan Fork-Join paralelism
- Synchronous vs Asynchronous Socket

Happy Podcasting

Indo Java Podcast #7 : Spring Roo vs Java EE 6 Death Match

5

Indo Java podcast #7 akhirnya terbit juga setelah agak lama. Proses editingnya memerlukan waktu cukup lama karena ada kesalahan teknis pada waktu rekaman, file yang kerekam terputus-putus menjadi beberapa file dan akhirnya harus digabung-gabungin lagi.

Anyway, indo java podcast ini membahas dua buah framework aplikasi web java: Spring Roo dan Java EE 6 web profile. Pembahasan dimulai dengan memperkenalkan spesifikasi masing-masing framework. Roo menggunakan Spring MVC 3.0, JPA, ApectJ dan dojo toolkit. Kalau Java EE 6 web profile menggunakan JSF 2.0, PrimeFaces 2.1, JPA 2 menggunakan EclipseLink dan Servlet 3.0.

Kita membuat sebuah aplikasi sederhana yang terdiri dari sebuah table, ada halaman form untuk insert dan update table, ada satu halaman untuk menampilkan table dalam grid. Table yang kita gunakan adalah table person yang terdiri dari beberapa kolom seperti id, nama, password dan satu kolom blob untuk menyimpan foto yang diupload user.

Di bagian awal dito menerangkan panjang lebar mengenai development modelnya Spring Roo yang menganut DDD (Domain Driven Design) dimana Model / Entity tidak hanya dumb class sebagai representasi dari table database, tetapi juga mempunyai kapabilitas untuk melakukan operasi terhadap dirinya sendiri. Misalnya ada Entity Person, maka akan ada method Person.save(), Person.delete(), Person.update() dan seterusnya. Dengan DDD, DAO pattern secara otomatis menjadi tidak berguna, karena operasi terhadap Entity dilakukan di dalam Entity itu sendiri, tidak di dalam DAO. Roo tidak hanya framework, tapi tools untuk rapid development, sepertinya Roo ini mengambil banyak inspirasi dari Ruby on Rails. Framework java yang menggunakan metode serupa adalah Play Framework.

Di segmen berikutnya saya menerangkan lebih jauh tentang Java EE 6, kemudian menjelaskan satu per satu file yang saya buat. Mulai dari SessionBean, Entity, Servlet, ManagedBean hingga ke UI file-nya. Penjelasanya cukup teknis dan cukup sulit dibayangkan tanpa melihat source code-nya, jadi silahkan browse langsung source codenya di :

http://code.google.com/p/indo-java-podcast/source/browse

Atau bisa juga pull repository indojava podcast menggunakan mercurial cleint, atau bisa juga install tortoise-hg.

hg clone https://indo-java-podcast.googlecode.com/hg/ indo-java-podcast

#7 http://indo-java-podcast.googlecode.com/files/indo-java-podcast%237.mp3
- Pengenalan Spring Roo
- Pengenalan Java EE 6 Web profile
- DDD (Domain Driven Design) di Spring Roo
- JSF, JPA, EJB dan Servlet di Java EE 6
- Aplikasi CRUD sederhana menggunakan Spring Roo dan Java EE 6

Happy Podcasting

Indo Java Podcast #6 : Ngobrol bareng dengan Daniel Baktiar tentang Software Architect

3

Indo Java Podcast kedatangan tamu lagi, kali ini yang menemani kita ngobrol adalah Daniel Baktiar. Kita ngobrol bareng tentang role Software Architect dalam dunia industri IT. Obrolan berlanjut ke stack teknologi yang digunakan oleh Daniel di perusahaan sekarang, developement environtment dan tools hingga sampai ke bagaimana belajar java yang baik.

Daniel memberikan gambaran yang cukup jelas tentang apa itu Software / Solution Architect, peranya dalam SDLC hingga skill apa yang diperlukan oleh seorang Architect. Satu quote yang menarik adalah “Role Software Architect itu dibuat agar orang-orang technical karirnya tidak langsung mentok”. Architect dalam SDLC berperan sebagai partner dari Project Manager untuk memberikan keputusan teknis dalam sebuah tim development. Architect juga harus mempunyai skill teknis yang sangat luas mulai dari platform pengembangan aplikasi, developement environtment, deployment environtment hingga harus mengerti tentang berbagai macam regulasi.

Architect juga harus mempunyai life skill berupa komunikasi dan negosiasi agar rekomendasinya yang diajukan ke management bisa diterima, serta harus bisa memperoleh kepercayaan dari anggota development team bahwa framework yang digunakan memudahkan development dan menaikkan produktifitas. Menjadi agen perubahan itu sarat dengan subjektifitas, tidak cukup bahwa perubahan yang dicanangkan adalah sesuatu yang baik, subject yang membawa perubahan juga harus baik.

#6 http://indo-java-podcast.googlecode.com/files/Indo%20Java%20Podcast%20%236.mp3
– Role Software Architect
– Daniel’s Framework Stack : Struts2-Spring-Hibernate
– Daniel’s Development Tools and Metodology : Subversion-Maven2
– Daniel’s Deployment environtment : Database-Virtualization
– Being Agent of change
– Belajar java dari mana?

Happy Podcasting

Indo Java Podcast #5 : Crowd Podcasting bareng Deny Prasetyo (Jug Joglosemar) dan Eko Khannedy (Jug Bandung)

1

Indo Java Podcast kedatangan teman-teman dari JUG Joglosemar, Deny Prasetyo dan JUG Bandung, Eko Khannedy. Topiknya tentang keadaan dunia pendidikan dan dunia industri yang masih belum saling mendukung. Podcast kali ini sedikit berbeda dibanding sebelumnya karena direkam lewat skype dan rekamanya rame-rame berempat.

Kali ini kita bahas banyak tentang dunia pendidikan vs dunia industri IT di indonesia, karena tamunya adalah dosen IT di kampus masing-masing. Pembicaraanya cukup seru membahas tentang bagaimana mengajarkan materi kuliah yang bisa membantu mahasiswa dalam masa transisi dari dunia kampus ke dunia kerja.

Di sela-sela ngobrol yang seru, kita juga membahas sedikit tentang Spring vs Java EE 6, pembahasanya hanya sekelumit saja, nah di episode selanjutnya kita akan membahas Spring vs Java EE 6 death match :) ).

#5 http://indo-java-podcast.googlecode.com/files/indo%20java%20podcast%205.mp3
– Mengajarkan OOP
– Kampus mengundang industri menyusun kurikulum
– Lab keilmuan di kampus
– Kampus memfasilitasi kegiatan “mahasiswa belajar sendiri tentang skill praktis bersama teman-teman lain”
– Spring vs Java EE 6

Happy Podcasting

Indo Java Podcast #4 : SOA

1

Episode kali ini saya dan Dito membahas panjang lebar tentang SOA. Pembahasan tentang SOA ini dipicu dari curhat rekan saya Tejo di milis JUG Indonesia, Beliau sedang membuka tender software SOA di kantornya. Peserta tender-nya 2 buah perusahaan Java paling gede se jagad, nah tejo berkeluh kesah tentang keadaan implementasi SOA di indonesia yang masih belum matang. Penyebabnya hasil pitching tender software SOA di kantornya tidak terlalu memuaskan, ibaratnya “Nyupir mobil nekan gas-nya masih gratal-gratul” :D .

Memang implementasi SOA bukanlah hal yang gampang, perlu usaha keras untuk membuat SOA implementation yang sukses dalam satu perusahaan. Dimulai dari pemahaman yang pas tentang SOA, tujuan utama implementasi SOA hingga penyusunan SOA blueprint yang baik. Dalam podcast kali ini kita bahas semua aspek-aspek tersebut secara mendalam. Karena keterbatasan pengalaman kami, beberapa topik dibahas dengan sedikit mengambang dan kurang komprehensif.

Daftar pembahasan SOA di indo java podcast #4 :
– Apa itu SOA
– Sejarah SOA
– Komunikasi antar business domain
– Message
– Protokol
– Orkestrasi
– ESB
– Komponen ESB
– Software2 SOA yg open source dan komersial
– Pengalaman implementasi SOA
– Kekurangan SOA

Download Indo Java podcast #4

Happy Podcasting

Indo Java Podcast #3 : Wawancara dengan Bramandia

2

Kali ini saya dan dito kedatangan tamu, Bramandia Ramadhana atau biasa dipanggil Bram. Beliau sekarang bekerja di IBM Singapore dan bulan depan akan memulai pos baru sebagai karyawan Google di Mountain View, CA.

Pada kesempatan ini kita ngobrol-ngobrol dengan Bram berkisar dari pengalaman Bram belajar pemrograman, keikut sertaanya di berbagai kompetisi pemrograman, studi S1 dan S2 di Singapura hingga bagaimana proses reqruitement Google. Banyak sekali cerita seru dan pengalaman berbeda disampaikan oleh Bram, terutama bagaimana Bram meniti karirnya. Sebagian besar programmer meniti karir dengan bekerja di perusahaan kecil consultant dan membuat aplikasi dengan belajar Framework. tetapi Bram meniti karir dari satu lomba pemrograman yang satu ke lomba pemrograman yang lain, hingga akhirnya masuk ke babak semifinal Google CodeJam. Dari situ tawaran wawancara dan pekerjaan dari Google datang dengan otomatis.

Selamat mendengarkan, dan semoga bisa menjadi inspirasi terutama bagi teman-teman yang masih mahasiswa.

http://indo-java-podcast.googlecode.com/files/Indo-Java-podcast%233.mp3
- Perkenalan dengan Bramandia
- Cerita Bramandia bagaimana sampai diterima di google mountain view
- IBM Singapore
- Java vs C++
- Bagaimana belajar java yang efektif
- Kompetisi-kompetisi pemrograman : TOKI, Google Code Jam, Top Coder dan ACM

Happy Podcasting.

New Breed of Developer

1

Dalam kurun waktu sepuluh tahun ke depan akan banyak hal terjadi dalam dunia IT. Beberapa ahli memprediksi akan lebih banyak bahasa pemrograman lahir. Bahkan java sendiri akan berevolusi menjadi platform untuk bahanyak bahasa, terutama scripting language. JDK 7 kemungkinan besar akan sudah menyertakan salah satu dari JRuby atau Groovy dalam distribusinya. Bahkan ada pula ahli yang memprediksi akan lahir sebuah bahasa pemrograman baru yang bisa menyaingi java dalam segala hal (really?).

Di sisi lain industri IT, terutama di Indonesia, berusaha dengan keras untuk terus bisa bersaing. Delivery schedule harus dipenuhi dengan taruhan apapun, deadline akan benar-benar menjadi pokok persoalan yang selalu urgent untuk dilaksanakan. Sedangkan antrian hal-hal penting yang harus diselesaikan secepatnya juga semakin panjang. Kualitas dan teknologi software pun harus ditingkatkan tanpa mengorbankan produktifitas. Padahal teknologi-teknologi baru bermunculan bak upil hidung di udara kotor jakarta :D .

(more…)

Seminar “Why Java”

2

Hari rabu tanggal 4 april 2007, gw dan dhiku organize seminar bertajuk “Why Java?”, seminar ini sebagai pengantar pengenalan java di almamater gw. Pesertanya terdiri dari adek-adek kelas angkatan 2004 dan 2005. Karena sempet molor beberapa saat, gw selingi bincang santai tentang topik “Nyambi & korupsi”, topik ini sempet jadi thread panas di milis Java User group. Sampai-sampai endy harus membuat pernyataan sikap tentang topik ini. :). Gw sendiri sih nggak terlalu exite sama konsep “nyambi” pas kerja, apalagi kalo nyambinya proyekan jg, sama-sama ngerjain software development. Kerja di kantor aja capeek minta ampun apalagi harus proyekan di luar. Kalau ngajar di pelatihan atau bikin-bikin buku masih oke lah, ga bikin repot kayak proyekan gitu. Apalagi kalo pas proyekan trus clientnya perfeksionis (perhalusan dari istilah rese :) ), bisa-bisa diperbudak sama proyekan tuh.

Anyway, back to topik Seminar “Why Java?”. Presentasi gw mulai dengan topik “What You Need in a Platform” diteruskan dengan topik “Why Java a Better Technology” kemudian dilanjutkan dengan topik “Why Java a Better Choice” dan diakhiri dengan topik “Why Java Good for Us”. Mari kita bahas satu satu topik tersebut.

(more…)

Belajar Java Mulai Dari Mana?

18

(note:posting lama dari blog saya sebelumnya)

Terinspirasi oleh tulisan endy saya juga mau cerita nih tentang pengalaman belajar java. Setiap orang punya jalab yang unik dalam belajar java, dengan melihat jalan-jalan ini orang yang baru belajar java dapat mengambil pelajaran untuk tidak melakukan kesalahan yang sama, atau dapat mengambil pelajaran yang berharga untuk diikuti.

(more…)

Go to Top