Java, một ngôn ngữ lập trình được sử dụng phổ biến trong việc phát triển các ứng dụng, đặc biệt là các ứng dụng cho Web và thiết bị di động, đang dần mất đi vị trí độc tôn của mình để nhường lại cho các đối thủ như Microsoft .NET, Ruby on Rails, PHP, AJAX, và nhiều ngôn ngữ lập trình Web mới khác.
Các nhà phát triển cho rằng Java đang cản trở họ. “Đã có nhiều lời hứa từ Java khẳng định rằng ngôn ngữ này sẽ giải quyết tốt vấn đề không tương thích khi chạy trên các hệ điều hành khác nhau. Tuy nhiên, hiện nay có quá nhiều phiên bản Java khác nhau cho phép người dùng tải về, tạo nên sự phức tạp của Java.” Peter Thoneny, CEO của Twiki.net – website cung cấp dịch vụ wiki nguồn mở – cho biết. Ofer Ronen, CEO của Sendori cũng đồng tình với ý kiến trên: “Nó không hề trở nên đơn giản, mà lại phức tạp hơn nhiều.” Được biết, Sendori cũng đã chuyển sang sử dụng Ruby on Rails cho các ứng dụng Web của mình. Ronen nói Ruby cung cấp những nền tảng kiến trúc đã được xây dựng sẵn như việc mua bán trực tuyến trên một website thương mại điện tử, do đó bạn không cần phải mất công để viết lại từ đầu như khi dùng Java.
Samir Shah, CEO của công ty kiểm định phần mềm Zephyr cũng đưa ra nhận xét rằng: “Một điểm yếu khác của Java so với các đối thủ là khả năng phát triển ứng dụng di động. Việc phát triển giao diện người dùng và quản lý bộ nhớ của Java không thật sự tốt như các lập trình viên mong đợi.” Điều đó giải thích tại sao các phiên bản Java viết cho thiết bị di động đang ngày một biến mất dần, và Google cũng đang phát triển một nền tảng cho điện thoại di động cho riêng mình.
Những nhược điểm trên đã gây ảnh hưởng lớn đến Java. Cuối tháng trước, nhóm nghiên của của Info-Tech cho biết rằng kết quả của một cuộc nghiên cứu trên 1 850 công ty lớn nhỏ và thuộc nhiều lĩnh vực khác nhau đã cho thấy công nghệ .NET của Microsoft đang được lựa chọn nhiều hơn so với Java, nhờ vào khả năng phát triển ứng dụng dễ dàng thông qua Visual Studio và SharePoint. Nền tảng .NET được Microsoft phát triển đang đẩy dần Java vào thế bất lợi.
Tuy nhiên, những nhà phát triển và phân tích cũng đồng ý rằng Java vẫn sẽ còn được tiếp tục sử dụng cho việc phát triển các ứng dụng nội bộ trong công ty, vì Java có một cơ sở hạ tầng mạnh có thể giúp nó đứng vững và trở thành một đối thủ có sức cạnh tranh.
Ronen nói Ruby cung cấp những nền tảng kiến trúc đã được xây dựng sẵn như việc mua bán trực tuyến trên một website thương mại điện tử, do đó bạn không cần phải mất công để viết lại từ đầu như khi dùng Java.
Ronen nói dối và dĩ nhiên là Ronen biết mình nói gì 😀 Ronen hẳn nhiên đã biết Struts, JBoss Seam, Stripes, Wicket. Ruby on Rails về thực chất chỉ là một framework cho web nhỏ. Không có gì đáng ghê gớm ở đó cả. Ruby On Rails rất kém ổn định. Một ngày có thể phải restart cả chục đến trăm lần. Kém ổn định hơn PHP và chẳng đem lại điều gì magic hơn.
Samir Shah, CEO của công ty kiểm định phần mềm Zephyr cũng đưa ra nhận xét rằng: “Một điểm yếu khác của Java so với các đối thủ là khả năng phát triển ứng dụng di động. Việc phát triển giao diện người dùng và quản lý bộ nhớ của Java không thật sự tốt như các lập trình viên mong đợi.” Điều đó giải thích tại sao các phiên bản Java viết cho thiết bị di động đang ngày một biến mất dần, và Google cũng đang phát triển một nền tảng cho điện thoại di động cho riêng mình.
Samir Shah thì thực sự không biết mình đang nói gì luôn. 😀 Android của Google chính là Java. Chỉ có điều sau Android của Google cố gắng thoát ra khỏi tầm ảnh hưởng của đặc tả Java ME. Google cố gắng định nghĩa một máy ảo Java khác có tên là Dalvik, sử dụng Linux và OpenGL, trình duyệt Webkit.
Phạm vi của Android lớn hơn Java ME vốn chỉ chú tâm định nghĩa đặc tả. Android cố gắng định nghĩa cả một hệ thống hoàn chỉnh bao gồm từ hệ điều hành cho đến đặc tả công nghệ. Ngôn ngữ thì vẫn là Java.
Tớ thì không nghĩ là nền tảng .NET đang có lợi thế. Marketing tốt không có nghĩa là market share tốt. Không một công ty nào muốn lock-in vào một vendor hay dùng các sản phẩm phi chuẩn hóa. MS phải tham gia vào việc chuẩn hóa nhiều hơn nữa thay vì cứ nắm giữ các chuẩn và các bản implementation độc quyền. Nhiều sản phẩm của MS có chất lượng như người ta đâu. Chiều hôm nay, ngồi viết cái đặc tả JMS cho khách hàng có kể với các đồng nghiệp câu chuyện rằng, một user của ActiveMQ sau khi kêu cả ActiveMQ bản C++ đột nhiên chạy khá chậm với 200msg/s trong khi bản Java vẫn có khả năng xử lý 7000msg/s, dĩ nhiên là non-durable, nhưng vẫn chạy ngon hơn MSMQ. MSMQ của MS sau thậm chí có không địch được với ActiveMQ chứ không nói gì đến Tibco hay IBM’s MQ Series. Các công ty lớn như BBC hay Boeing thì cho rằng nền tảng .NET thiếu tính nhất quán và không có sự ổn định cần thiết cho việc nâng cấp triển khai ở diện rộng cho nên khi triển khai .NET, họ phải tạo ra một framework mới cho nội bộ công ty hơn là dựa vào bản nâng cấp của MS.
Gần đây có theo dõi một số conference thì các CTO ở các ngân hàng cũng có nói đến tình hình sử dụng .NET: desktop application, thin client và LAN-based apps. Điểm mạnh của .NET là giao diện và tooling được phát huy ở đây. Hạn chế chính của các ứng dụng .NET là Windows only trong khi chu kì sống của Windows thì khá ngắn. Các ứng dụng cần xử lý các khối lượng tính toán lớn thì C/C++ hay Ocaml. Các ứng dụng tính toán không lớn nhưng độ latency phải cực thấp: ví dụ 10,000 – 50,000 transaction/s thì C/C++, Java và clustering JVM (Terecora).
Các ứng dụng Java có đặc biệt là độ phức tạp cao và quy trình viết code cũng hết sức chặt chẽ nên nó được ưu tiên cho các dự án mà tiền không thành vấn đề, cái chính là portable và phải có độ tin cậy cao khi áp dụng cho các nghiệp vụ mission-critical. Cái chữ mission critical này mãi đến khi làm cho cái công ty tài chính của Mĩ hiện tại tớ mới hiểu được nó có nghĩa thực sự là gì? Trước cứ đọc cho vui thôi 😀
mission-critical là gì vậy đại ka. em cũng không hiểu
.Net dường như nó đi theo hướng của riêng mình, nguyên việc mỗi phiên bản khác nhau có cách hỗ trợ khác nhau cũng như tính tương thích nguợc không ổn định {đơn cử như cái app CD Drive Control của mình, trên 1.0 thì hoạt động tốt, trên 2.0 thì lệnh đầu tiên luôn là đóng CD Tray, trên 3.0 thì thỉnh thoảng mở CD Tray đóng vào lại hoá ra mở lần nữa :x}, hơn nữa nếu đi theo nền .Net thì lại bó buộc vào M$ và Windows.
Tiện thể bác nói rõ cái mission critical luôn đi, em cũng không thực sự hiểu nghĩa của nó 😀
Ghét dùng Java bởi vì các app của nó chậm quá, không hiểu do mình code hay do cách nó compiled nữa, ấn tượng đầu tiên thì lại khó phai; hơn nữa nó cũng ăn tài nguyên dã man, đơn cử cho chuyện xài RSSOwl và Greatnews, có hơn 300 feed mà RSSOwl mỗi lần chạy chơi nguyên 400 MB RAM trong khi Greatnews chỉ có 60 MB RAM chưa kể mỗi tác vụ của RSSOwl kéo theo CPU usage lúc nào cũng 95% trở lên 🙁
Dù Java hiện nay ko được ưa chuộng như trước nhưng tôi vẫn tin rằng sẽ có những đột biến trong thời gian tới. Tôi tin tưởng vào Ông Sun