Lifecycle Tablet yang Terlalu Cepat
Tidak dipungkiri, tablet adalah gadget yang paling diminati saat ini sejak kemunculan Apple iPad. Gadget tipis ini sekarang menghiasi tempat-tempat nongkrong nan gaul di sudut-sudut kota metropolitan. Melihat animo yang sedemikian besar, tentu vendor-vendor lain tak ingin membiarkan kue manis itu dinikmati sendirian oleh Apple. Maka muncullah Samsung Galaxy Tab, Acer Iconia, BlackBerry Playbook, dan sederet merk-merk lain mulai dari yang paling mahal sampai yang model-model Cina.
Nama iPad sendiri pun telah menjadi generik seperti Aqua dan Sanyo. Sehingga ada yang bilang, sekarang ini iPad bermacam-macam, ada iPad yang dari Apple, ada yang iPad yang Android, ada yang iPad Cina, dll. Menggelikan atau memalukan? Entah.
Akan tetapi, untuk apa sih tablet itu sebenarnya?
Jika Anda sering presentasi ke client, dan setiap hari Anda harus mobile ke sana ke mari, maka Anda butuh tablet. Saya melihat betapa praktisnya ketika dosen saya menerangkan pengembangan dan pencarian ide di IDEO, sebuah perusahaan kreatif. Beliau cukup mengakses Youtube di iPad-nya lalu menampilkannya ke proyektor in-focus.
Jika Anda butuh alat yang praktis untuk baca ebook, akses email secara mobile yang lebih nyaman ketimbang di ponsel, komputasi sederhana ngitung untung rugi penjualan, monitor saham — Anda butuh itu, meskipun buat saya tablet masih terlalu berat untuk dijinjing selama dua jam untuk membaca. Dan komputasi sederhana itu saya kira hanya dilakukan oleh para pengusaha.
Tapi berapa banyak dari pemilik tablet — entah GTab entah iPad — yang menggunakan alat sesuai kebutuhannya? Saya melihat kebanyakan mereka memakai tablet untuk bermain game. Yeah, ini memang salah satu fitur tablet sih, tapi kok ya mahal-mahal cuma buat nge-game. Sayang duitnya kalau saya mah…
Jika kita mengabaikan fungsi dan fokus pada lifestyle, menurut saya perkembangan tablet juga terlalu cepat. Sebuah produk terlalu cepat basi, alias lifecycle-nya terlalu cepat. iPad1 yang begitu menghebohkan, sekarang sudah dipandang sebagai benda yang ketinggalan jaman. Nggak ada gengsi-gengsinya sama sekali kalau orang melihat iPad1 sekarang. Hal yang sama akan menimpa iPad2 sebentar lagi, juga Galaxy Tab 10, dan seterusnya. Dalam waktu yang menurut saya terlalu cepat. How long can you catch the trend and prestigue?
Saya pribadi masih memilih netbook ketimbang tablet. Karena masih bisa diisi Windows atau Linux. Dengan sistem operasi ini, saya akan bisa mengerjakan banyak hal. Itu artinya bahwa kebutuhan saya masih berupa sebuah komputer yang utuh, bukan tablet. Saya tidak mungkin bikin program Java atau mendesain web pakai tablet kan? Netbook meskipun akan lambat, masih bisa dipakai untuk itu.
Berkenalan dengan SOA (Service Oriented Architecture)
Sebagian dari teks ini saya tulis berdasarkan presentasi saya ke manajemen departemen ICT di pabrik yang dilanjutkan dengan workshop singkat kepada teman-teman satu tim di acara Sharing Session, 17 November 2011.
Saya sudah cukup lama meng-eksplorasi ranah teknologi SOA, mungkin sejak artikel XML-RPC ini, tetapi baru akhir-akhir ini saya mendapatkan kesempatan untuk mempraktikkannya di dunia persilatan. Pabrik tempat saya bekerja telah mengakuisisi lisensi Oracle Fusion SOA Suite Middleware dan mencoba mengimplementasikannya dengan proses bisnis yang sudah ada.
Jadi, SOA bukanlah sebuah produk. SOA adalah sebuah pendekatan, atau cara berpikir, dalam melihat sebuah sistem. “Sistem” dalam hal ini tidak melulu teknologi, tetapi juga bisa tentang proses bisnis, organisasi, dll. SOA melihat sistem yang saling berinteraksi dan berkolaborasi dalam menyediakan dan menggunakan “service” (layanan). Untuk memenuhi hal itu, SOA harus memenuhi syarat-syarat: loosely coupled (independen), menggunakan protokol standar yang telah disepakati, dan cross-platform (lintas platform — sistem operasi, bahasa pemrograman, lintas organisasi, bahkan hingga lintas budaya). SOA hanya fokus pada layanan apa yang tersedia, bagaimana cara menggunakannya, dan bagaimana layanan itu bisa bermanfaat. Apa yang ada di balik layanan itu, SOA tidak perlu ambil pusing.
Kita memakai jasa pesawat, dalam dunia SOA, kita sudah bisa disebut sebagai service consumer dimana penyedia layanan pesawat disebut sebagai service producer. Yang kita perlu tahu adalah bagaimana cara memesan tiket, check-in ketika sampai di bandara, dan memasuki ruang boarding untuk masuk pesawat. Padahal, di balik layanan pesawat, ada puluhan atau bahkan ratusan service-service yang saling terhubung untuk dapat menyediakan layanan ini.
Amazon.com, bisa dikatakan adalah perusahaan besar yang hanya bermodal dengkul, eh, merangkai banyak service. Amazon.com tidak melakukan semuanya sendiri, tetapi dikerjakan oleh pihak lain. Toko buku, gudang, payment gateway, layanan kargo, dll. Banyak layanan itu dirangkai (istilah SOA-nya di-orchestrate) menjadi satu kesatuan service yang bisa kita nikmati.
Web Service dan Oracle SOA Suite Middleware
Implementasi SOA dalam ranah teknologi informasi mendasarkan diri pada XML sebagai standar. Dan yang umum dipakai sebagai ujung tombak komunikasi (end point) adalah Web Service. Ada dua madzab besar implementasi web service, yaitu SOAP dan RESTful. SOAP adalah sebuah protokol khusus web service yang berjalan di atas protokol HTTP. SOAP menyediakan banyak spesifikasi standar yang bisa digunakan dalam komunikasi antar web service. Sedangkan RESTful sifatnya lebih lightweight. Ia adalah webservice yang bisa diakses melalui protokol HTTP biasa — jadi operasinya murni melalui manipulasi URL.
Oracle SOA Suite Middleware adalah produk implementasi SOA keluaran Oracle. Barang aslinya adalah Aqualogic milik BEA. Karena BEA diakuisisi Oracle, maka Aqualogic menjadi roh dari Oracle SOA Middleware ini.Di dunia open source, kita mungkin mengenal Glashfish ESB yang juga merupakan salah satu implementasi dari SOA.
Ini adalah paket lengkap yang lebih dari cukup untuk mengimplementasikan pendekatan SOA di bidang IT. Dia menyediakan banyak adapter ke berbagai macam aplikasi seperti Database Adapter, Oracle EBS Adapter, Spring Context Adapter dll. Ia juga mendukung penuh fitur messaging (event-based service — lihat spesifikasi Java Messaging Service). Dan tentu saja, ia menyediakan fitur BPEL (Business Process Execution Language) sebagai bahasa dasar untuk merangkai dan meng-orchestrate banyak service untuk menjadi sebuah composite application. Fitur menarik lainnya adalah Oracle Service Bus (produk enterprise service bus-nya Oracle) yang digunakan untuk service virtualization, dan Oracle BAM (Business Activity Monitoring) untuk kebutuhan monitoring dan reporting. Semua itu dibundel dalam kardus yang harga lisensinya sangat mahal (sekitar USD 200 ribu).
Buat saya sebuah kehormatan bisa mencoba dan mempelajari “Ferrari” ini. Demikian. Mohon maaf saya tidak bisa men-share bahan presentasi karena ada banyak materialnya yang sangat spesifik tentang sistem di pabrik tempat saya bekerja ini.
The New Experience of Coding
Saya menemukan passion di pemrograman komputer beberapa bulan setelah saya menjalani perkuliahan di Teknik Informatika ITS, hampir sepuluh tahun yang lalu. Ketika mencari-cari bahasa yang akan dijadikan spesialisasi, saya menemukan sebuah quote dari majalah Oracle, “… because we believe in Java.” Sejak itu saya menyadari bahwa Java akan menjadi bahasa masa depan.
Sampai sekarang saya masih bekerja sebagai programmer (yg banyak orang bilang ini adalah jenjang karier terendah di dunia IT), meskipun sekarang lebih banyak analisis data. Saya ditugaskan di bagian ini setelah dua tahun mengotak-atik aplikasi Java Enterprise. Hal itu kadang-kadang menimbulkan kerinduan, sehingga kadang-kadang saya membuka kode Spring, Struts, dan Hibernate untuk membuat sebuah aplikasi kecil yang memakai PHP pun sebenarnya bisa.
Lha, awal bulan ini, atasan saya mengembalikan saya ke sisi programming lagi disamping tanggung jawab saya untuk analisa data sebuah sistem ERP untuk manajemen aset. Sebuah pengalaman baru bagi saya, yaitu bahasa deklaratif untuk arsitektur berorientasi pelayanan (halah… Service Oriented Architecture – SOA). Mendalami alur-alur proses dalam bahasa BPEL (Business Process Execution Language), mediator, web service, database adapter, dll.
Passion itu saya temukan lagi. Sudah lama saya tidak mengalami gairah yang meluap-luap, sebegitu penasarannya ketika web service saya tidak berjalan. Berusaha menemukan pintu ketika menabrak tembok, bukan malah membentur-benturkan kepala berharap temboknya jebol. Programming itu sebuah seni, karena dibutuhkan imajinasi dan kreativitas ketika membangunnya.
Seperti halnya dulu, saya rasa, SOA adalah arsitektur masa depan. Dan lagi-lagi Oracle yang membuat saya berpikir begitu. Oh iya, saya memakai Oracle SOA Suite 11g, yang merupakan bagian dari Oracle Fusion Middleware. Mungkin kapan-kapan saya akan ceritakan lebih detail tentang produk ini nanti.
Dennis Ritchie
Namanya memang tidak akan sepopuler Steve Jobs, tapi saya pikir semua programmer akan mengenal Dennis Ritchie. Minimal programmer yang pernah belajar bahasa C. Ya, Dennis Ritchie adalah salah satu tokoh besar di dunia IT yang meletakkan fundamental penting di dunia bahasa pemrograman. Dialah pencipta bahasa C, sebuah bahasa yang menjadi dasar sistem operasi paling stabil di dunia: UNIX.
Setiap programmer yang memulai pelajarannya dari bahasa C akan menjadi programmer yang baik. Karena memang bahasa C menuntut setiap programmernya untuk menulis secara rapi, terstruktur, dan disiplin. Tetapi bahasa C juga membuka kesempatan seluas-luasnya untuk mengakses segala resource yang ada di komputer, dari level teratas sampai level bahasa mesin (izin akses langsung ke bahasa assembly untuk memakai interupt-interupt prosesor).
Bandingkan dengan programmer-programmer jalanan yang kebanyakan belajar mulai dari bahasa Visual Basic (baik yang versi 6 atau .net nya) atau bahasa PHP. Saya hampir yakin bahwa tingkat kerapian dan kedisiplinannya akan jauh di bawah programmer yang khatam bahasa C. Bahasa C tidak hanya sekadar bahasa terstruktur yang sekarang sudah jarang dipakai, tetapi bahasa C adalah sebuah kerangka berpikir yang akan menuntun programmer untuk berpikir dengan rapi pula. Makanya Dennis Ritchie dianggap sebagai guru para programmer sedunia.
Bahasa C juga menjadi fondasi bahasa-bahasa berorientasi objek yang terkenal sekarang: Java, bahkan Visual Studio .net meninggalkan filosofi Visual Basic dan mengikuti Java. Kebanyakan kerapian dan kedisiplinan C dibawa ke bahasa-bahasa modern. Tetapi keluwesan bahasa C untuk mengakses banyak resource dibatasi oleh bahasa-bahasa modern. Ada pemeo yang terkenal, “Dennis Ritchie membuat C dengan berpikir semua programmer akan menulis seperti Dennis Ritchie. James Gosling membuat Java dengan berpikir semua programmer akan menulis seperti Dennis the Menace”.
Saya termasuk beruntung mulai belajar pemrograman dari bahasa C.
RIP Dennis Ritchie.
JRockit Lebih Baik Daripada Sun JDK
Sejak mengenal Java hingga sampai sekarang, saya adalah pengguna setia Sun Java, baik Java Development Kit-nya maupun Java Runtime Environment-nya. Bukannya apa-apa, saya memang tidak pernah mengenal SDK (Standard Development Kit) selain bawaan dari Sun. Dan saya tidak pernah menemui masalah ketika memakainya di production environment.
Hingga kemarin waktu saya mau deploy Liferay. Saya menggunakan Liferay Community Edition edisi bundled dengan Tomcat. Java bawaan yang dipakai adalah Sun JRE 1.6. Server yang dipakai adalah Windows Server 2003 (32 bit) dengan total RAM 3GB yang berjalan di mesin virtual VMWare di atas IBM Blade Server.
Tetapi performanya sangat lambat. Saya tidak bisa mengalokasikan semua memory untuk Java. Maksimal saya hanya bisa alokasi heap space-nya di 1150 MB. Anehnya, Java tidak memakai jatah yang sudah diberikan, maksimum hanya sekitar 700 MB physical memory yang dipakai, selebihnya diswap ke virtual memory yang pastinya jauh lebih lambat.
Mentok, saya coba memakai JRockit dari BEA. Ini dari pengalaman teman saya yang mengalami masalah serupa dengan performance JDK bawaan Sun. Saya bisa mengalokasi RAM sekitar 1500 MB dan sepertinya JRockit mampu memakainya secara maksimal. Hasilnya, peningkatan performance sudah cukup terasa dengan waktu load yang lebih cepat — meskipun belum terlalu acceptable buat saya. Tujuh detik untuk loading portlet yang berat masih terlalu lambat. Tetapi paling tidak, pergantian JDK ini sudah cukup berpengaruh. Mungkin setelah ini saya akan coba memakai Liferay yang bukan versi bundled-nya.
Menariknya, dulu dua SDK ini adalah kompetitor satu sama lain. Tetapi faktanya sekarang Sun adalah milik Oracle, dan BEA juga dibeli Oracle. Dua-duanya menjadi produk Oracle Middleware. Namanya menjadi Oracle Java Standard Edition dan Oracle JRockit. Saya agak geli ketika download kedua SDK ini dari situs yang sama.
Pertempuran Abadi Java dengan Flash
Kembali ke sekitar tahun 1996, dimana sekelompok orang dari Sun Microsystem (James Gosling, Mike Sheridan, Patrick Naughton) mengguncang dunia dengan sebuah platform pemrograman baru yang mereka beri nama: Java. Membawa janji-janji yang nampaknya sulit terwujud waktu itu: multiplatform, write once, run everywhere!
Sebuah konsep penulisan kode komputer tanpa dikompilasi langsung menjadi bahasa mesin namun melalui intermediate bytecode yang dijalankan oleh sebuah interpreter merupakan sebuah lompatan besar saat itu. Hingga kini, Java masih menjadi salah satu bahasa favorit dan menginspirasi platform pemrograman seperti .NET dan Python.
Salah satu buzz waktu itu adalah munculnya Java Applet. Java Applet menawarkan sebuah aplikasi serumit aplikasi desktop tetapi bisa dijalankan melalui web. Pada waktu itu bahasa pemrograman berbasis web masih sangat terbatas dan belum sepopuler sekarang. Applet memungkinan programmer membuat sebuah RIA (Rich Internet Application) yang rumit atau sekadar membuat kagum pengunjung dengan animasi grafis yang indah.
Namun tidak lama setelah itu, muncul Macromedia Flash (sekarang menjadi Adobe Flash). Di awal kemunculannya, Flash memposisikan diri sebagai platform multimedia yang berjalan di atas web. Flash dirancang untuk desainer ketimbang programmer. Karena kebutuhan waktu itu adalah multimedia, didukung scripting yang sederhana seperti VB Script, dan shockwave player yang ringan, Flash segera merebut hati dunia web. Java Applet menjadi terkesan tua, berat, dan segera tenggelam popularitasnya.
Sekarang
Dalam perkembangannya, Adobe Flash tidak mungkin diam sebagai multimedia platform saja. Dengan Action Script yang terkenal, Flash berkembang ke ranah programming platform sebagai RIA. Karena berawal dari scripting sederhana, bukan dari bahasa yang kuat semacam Java, proses perkembangannya nyaris seperti tambal sulam. Gali bug tutup bug.
Dengan sifatnya yang independen terhadap browser, browser modern yang sangat cermat dengan isu keamanan praktis membencinya. Apple berteriak paling keras membenci Flash. Google Chrome yang memberikan akses terbatas terhadap subprogram di luar kendalinya pun seringkali crash karena aplikasi Flash yang kurang baik diprogram.
Ketika tren aplikasi web bergerak ke arah mobile, nampaknya Java kembali memegang peranan. Hampir semua mobile platform menggunakan Java dalam code development-nya, misalnya Blackberry dan Android. Tentu saja bukan Java Micro Edition era tahun 90-an, namun dasar-dasar Java masih dipakai oleh RIM dan Google. Sepertinya, bahasa yang memiliki dasar desain yang kokoh dan bagus akan terus dipakai sebagai standar hingga beberapa waktu ke depan.
#ITisMyWorld
Update Data Tabel dari Data di Tabel Lain
Ini adalah satu skill dasar tapi sering dilupakan dalam melakukan query database DML (Data Manipulation Language). Bagaimana cara melakukan update kolom sebuah tabel (katakanlah tabel baru) yang nilainya ada pada kolom di tabel lain (misalnya tabel lama)? Pada database Oracle, tentu saja.
Yang jelas, kita harus melakukan inner join pada dua tabel tersebut seperti halnya kalau kita melakukan query SELECT pada dua tabel master detail. Misalnya, kita akan mengupdate kolom satu, dua, dan tiga. Maka sintaksnya akan seperti begini:
UPDATE TABLE baru b SET (satu, dua, tiga) =
(SELECT satu, dua, tiga FROM lama b
WHERE b.primarykey1 = a.primarykey2 AND b.key2 = a.key2)
WHERE EXISTS
( SELECT 1 FROM lama b
WHERE b.primarykey1 = a.primarykey2 AND b.key2 = a.key2)
Pada klausa SET, kita melakukan query SELECT ke tabel lama dengan melakukan inner join tabel baru dengan penghubung kolom-kolom primary key-nya dan filter-filter kondisi yang diinginkan. Ini untuk mendapatkan nilai kolom satu, dua, dan tiga.
Namun ada satu hal lagi yang harus kita lakukan. Kita juga harus memfilter statement UPDATE dengan kondisi yang sama pada klausa SET. Hal itu dilakukan dengan menggunakan klausa EXISTS hanya sekadar untuk memeriksa ada atau tidaknya row yang bersangkutan pada tabel yang dijoin.
Basic skill, tapi saya sering lupa. Makanya saya tulis di sini, he he he…
Comments