She’s watching me awkwardly from a distance.
Should I care?
Is there something more I should have known?
I know that I wonder
– Follow And Feel, Saosin
I did start programming in Java. Dari pertama kali mengenal bahasa pemrograman sampai sekarang, java adalah bahasa pemrograman yang paling sering saya pakai. Kurikulum di jurusan juga tidak secara explicit mengajarkan bahasa pemrograman lain sehingga kesempatan saya untuk bersentuhan dengan bahasa pemrograman lain pun menjadi terbatas.
Pada mata kuliah pemrograman web pun yang diajarkan adalah JSP native yang obsolete bukannya PHP atau Ruby on Rails. Mungkin jika saya tidak menjalani kehidupan sebagai freelance programmer/ programmer proyekan , satu satunya bahasa pemrograman yang saya kuasai adalah Java karena di kuliah cuman itu yang diajarkan. I learned PHP and javascript from my projects. My point is my whole programming life before was java centric.

Dan hal ini mulai berubah ketika di PT INCO project yang dibebankan kepada saya di develop menggunakan C# dan .NET Framework. Benar benar sebuah tantangan , karena selama ini saya sedikit alergi dengan development stack Microsoft. Tapi karena memang tuntutan pekerjaan dan klo dipikir pikir juga ketergantungan terhadap satu bahasa pemrograman gak bagus buat masa depan seorang calon pemimpin teknologi informasi indonesia masa depan seperti saya ini (narsis mode on). Tanpa panjang lebar, tanpa bekal apapun langsung deh saya memanaskan laptop dengan mengklik IDE C# Visual Studio 2008.
Oke, mungkin saya sedikit terlambat mengingat visual studio sudah ada sejak tahun 90 an. Sebelum ini belum pernah sekalipun saya membuka visual studio jadi langkah pertama adalah penyesuaian dulu IDE dulu sebelum belajar C#. Tidak berbeda jauh sebenarnya dengan Netbeans atau Eclipse yang biasa saya gunakan. Just like Netbeans, it is an one hell of those smart IDE. Mulai dari debugger, property inspector, visual builder ada disini. Salah satu fitur menarik adalah Server Explorer, dengan fitur ini developer dapat melihat informasi internal komputer contoh : service yang sedang berjalan.
Just explore the service running in server
Hal yang wajar sih, mengingat yang di explore juga server yang berbasis windows. Cukup untuk bermain mainnya, lets go straight to the code. Secara syntax hampir sama antara C# dengan Java. Deklarasi object, logical flow, iterasi sama persis dengan java. Mungkin yang sedikit membingungkan pertama kali bagi saya adalah keyword USING dan NAMESPACE. Kode dibawah bisa sedikit menjelaskan.
using System.DirectoryServices namespace PTIKONEK{ class Konek1{ } }
Kalau di java, using adalah import dan namespace adalah package. Using berfungsi untuk melakukan loading terhadap package atau library di luar class sedangkan namespace berfungsi untuk memasukkan class kedalam sebuah package atau kumpulan class. Cuman beda istilah aja, ndak masalah :).
Satu hal lagi yang saya temukan adalah jarang terdapat mutator dan aksesor. Untuk merubah variabel , object di C# membolehkan variabelnya diakses dari luar. Mari kita lihat kode dibawah.
SqlConnection Conn = new SqlConnection(); Conn.ConnectionString = SQLCONNECTION; Console.WriteLine(Conn.ConnectionString); Conn.GetType();
Untuk melakukan assign nilai dari variabel ConnectionString, variabel diakses dari luar objek lalu di berikan nilai. Sementara untuk mengambil nilai caranya juga sama. Di java hal ini biasa dilakukan dengan menyediakan method setter dan getter untuk variabel, sehingga variabel tidak bisa diakses dari luar object. Tetapi herannya, object connection juga mempunyai method GetType untuk mendapatkan tipe object. A little bit inconsistent i think.
Bukannya saya fetish dengan getter-setter, tetapi di java kalau mau melakukan setting terhadap sebuah Object atau Class di java kan tinggal ngelist aja apa aja get dan setnya. kalau di C#, harus ngebaca satu satu attribut objectnyadeh walaupun di visual studio kombinasi sakti CTRL + SPASI berfungsi dengan baik untuk menampilkan method dengan dokumentasinya.
Requirement dari project di INCO adalah melakukan integrasi antara 2 database crossvendor dengan 1 datasource lain yaitu active directory. Hal aneh yang saya temukan lagi adalah terdapat dua object yang benar benar sama fungsi tetapi tidak bisa diassign satu sama lain. Mari kita lihat
SqlConnection Conn = new SqlConnection(); OleDbConnection ConnOra = new OleDbConnection(); SqlCommand cmd; OleDbCommand cmdOra; SqlDataReader reader; OleDbDataReader readerOracle
Object connection, command dan reader dibuat berbeda untuk vendor yang berbeda. Namun object diatas tidak bisa di convert ke bentuk lain menggunakan casting yang berarti mereka bukan sibling class atau class yang mempunyai parent class yang sama. SqlConnection untuk konek ke SqlServer sementara OleDbConnection untuk konek ke database apapun dengan menggunakan Ole database driver dalam hal ini Oracle.
Sedikit menyimpang dari konsep OOP menurut saya, akankah lebih baik jika parent object Connection sehingga kan lebih mudah untuk di assign ke bentuk lain yang sama fungsi. Thats one reason why i miss JDBC or maybe Hibernate :).
Saya belum explor banyak sih disini. Fitur fitur .NET baru seperti LINQ juga belum sempat saya coba karena belum terlalu dibutuhkan di project ini. Overall pengalaman saya dengan C# kurang memberikan impresi yang bagus. I still prefer to do codes in Java Way. Dan itu yang saya lakukan di project ini, C# with java style (Java Beans like method naming, getter – setter, etc).
Sekian review saya folks. Thanx for reading.
🙂
Java maniac nih…!
Salam kenal,
thx infonya..