จาวา “Write once, Run Anywhere” ไม่ได้เพราะ Software Vendor ที่ใช้?

ประโยคสุดคลาสสิคสำหรับผู้เขียนจาวา
ซึ่งคาดว่าน่าจะเคยได้ยินกันมาบ้าง

Write once, Run Anywhere

จากที่เราเห็นกัน
ถ้ามันเป็น Desktop Application ที่ไม่อลังการมาก
ก็ไม่น่าจะมีปัญหาอะไร

แต่พอยกระดับมาทำ Enterprise
ที่เราต้องใช้ Framework หรือต้องเลือก Application Server(Web Server)
มันก็มีสารพัดให้เลือกจนเลือกกันไม่ถูกเลยทีเดียว

Framework ก็จะมี Spring, Struts, Hibernate, myBatis(iBatis), JSF, Seam, …
Application Server(Web Server) ก็จะมี Tomcat, JBoss, Glassfish, Jetty, JRun(Adobe), Weblogic, Websphere, …

และเมื่อถึงคราวที่ต้องลงมือเขียนกัน
เราก็ต้องเลือกมาซักอัน (หรือคนอื่นเลือกให้)
แล้วเราก็หลับหูหลับตา ก้มหน้าก้มตาทำจนเสร็จ(ไม่นับแก้ bug)
ครั้นพออยากจะเปลี่ยน Application server
ตอนนี้หล่ะ จะเริ่มมีปัญหาหล่ะ
(ไม่นับส่วนที่ทำการ hard code บางอย่างด้วยนะ)

ถ้าตาม Concept ประโยคสุดคลาสสิค
มันต้องย้ายค่ายได้ เช่น
ของเดิมทำบน Tomcat แล้วอยากย้ายไป JBoss
ก็ไม่น่าจะมีปัญหาอะไรนะ
เห็นเขาว่า JBoss มันก็เอา Tomcat มาตั้งต้นนิ
แต่พอเอาเข้าจริง งานบางอย่างก็ย้ายไม่ได้

ใหนจะติดเรื่อง config ของ framework ที่เลือก
บางเจ้าอยากได้ option นี่นั่นเพิ่ม
ใหนจะติดเรื่องเรียกใช้ API บางอย่างที่เฉพาะเจาะจงกับ Application Server ตัวนั้น
(เช่น Tomcat ไม่มี Datasource แต่ JBoss มี)
ใหนจะติดเรื่อง version ของ JDK ที่ใช้

คิดไม่ออกหล่ะ

สรุปว่าอะไรคือต้นตอที่ทำให้ความศักดิ์สิทธิ์ของประโยค

Write once, Run Anywhere

หายไปกันแน่นะ

น่าจะเป็นเพราะสองอย่างนี่หรือเปล่า
1. Programmer เขียน Program ให้ใช้งานได้แค่เครื่องนั้นเดรื่องเดียว
2. การเลือก Application Vendor เป็นการผูกขาตัวเองไว้กับ Vendor เจ้านั้นๆ
ทำให้เวลาย้ายค่ายไปเจ้าอื่นทำได้ยาก

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s