Java là một công nghệ xây dựng các ứng dụng phần mềm đƣợc phát triển bởi tập đoàn Sun Mirco Systems. Java có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21. Nó đƣợc coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần. Ngày nay, Java là một nền tảng tất yếu của các ứng dụng quy mô lớn của các doanh nghiệp nhờ vào khả năng mở rộng cũng nhƣ những nền tảng vô cùng phong phú mà nó cung cấp.
Một số đặc điểm của Java:
Đơn giản: Java đơn giản vì, mặc dù dựa trên cơ sở C++ nhƣng Sun đã cẩn thận lƣợc bỏ các tính năng khó nhất của C++ để làm cho ngôn ngữ này dễ sử dụng hơn. Là một ngôn ngữ lập trình hoàn toàn mới, nó buộc phải có dáng vẻ và sự cảm nhận tƣơng tự nhƣ các ngôn ngữ phổ biến hiện hành đồng thời đòi hỏi khoảng thời gian tìm hiểu tối thiểu và thân thiện hơn đối với các nhà phát triển.
Hƣớng đối tƣợng (Object Oriented): Hƣớng đối tƣợng trong Java tƣơng tự nhƣ C++ nhƣng Java là một ngôn ngữ lập trình hƣớng đối tƣợng hoàn toàn. Tất cả
Nguyễn Văn Hưng – D06VT2 67 mọi thứ đề cập đến trong Java đều liên quan đến các đối tƣợng đƣợc định nghĩa trƣớc, thậm chí hàm chính của một chƣơng trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp. Hƣớng đối tƣợng trong Java không có tính đa kế thừa (multi inheritance) nhƣ trong C++ mà thay vào đó Java đƣa ra khái niệm interface để hỗ trợ tính đa kế thừa.
Hiểu mạng (network-savvy): Java đƣợc phát triển để hoạt động trên mạng và có các thủ tục để có thể quản lý các giao thức mạng nhƣ TCP/IP, FTP và HTTP. Nói cách khác, Java đƣợc xây dựng để thực hiện hoàn toàn thích hợp trên Internet. Chƣơng trình Java thậm chí có thể xâm nhập vào các đối thƣợng khác thông qua Internet bằng cách sử dụng URL (địa chỉ Web) để định vị chúng.
Mạnh mẽ (robust): Khả năng mạnh phải phù hợp với thiết kế của ngôn ngữ, và hƣớng nó vào việc khắc phục những hƣ hỏng bộ nhớ và đảm bảo tính toán vẹn dữ liệu. Ví dụ, Java có tính năng "automatic garbage collection" (tự động thu gom rác) - có nghĩa là bộ nhớ đƣợc giải phóng một cách tự động - nên lập trình viên không phải bận tâm về việc quản lý bộ nhớ và nhờ đó ít có xu hƣớng làm những việc gây hỏng bộ nhớ.
An toàn (secure): Khả năng hƣớng mạng của Java tự động đƣa ra yêu cầu về an toàn. Đặc tính an toàn của ngôn ngữ lập trình này bắt nguồn từ việc nó có những phần hạn chế đƣợc cài sẵn nhằm đề phòng các chƣơng trình Java thực hiện những chức năng nhƣ ghi vào ổ cứng của ngƣời dùng hay cho phép virus từ mạng hoặc từ môi trƣờng phân tán thâm nhập vào.
Độc lập nền tảng: Đây là thuộc tính đặc sắc nhất của Java. Java đƣợc tạo ra với tiêu chí "Viết (code) một lần, thực thi khắp nơi" ("Write Once, Run Anywhere" (WORA)). Tính năng biên dịch một lần và chạy nhiều nền có thể đạt đƣợc nhờ just-in-time compiler (JIT), chuyển mã bytecode của Java sang mã máy khi chƣơng trình đang chạy. Chƣơng trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trƣờng thực thi với điều kiện có máy ảo java thích hợp hỗ trợ nền tảng đó. Môi trƣờng thực thi của Sun Microsystems hiện hỗ trợ Sun Solaris, Linux, Mac OS, FreeBSD, Windows và nhiều hệ thống cài đặt trên các thiết bị di động.
Di động (portable): Đối với một phạm vi rộng, Java là loại có thể di chuyển nhờ khả năng độc lập với hệ máy. Đồng thời, các loại dữ liệu, giao diện, cũng nhƣ
Nguyễn Văn Hưng – D06VT2 68 dáng vẻ và cảm nhận của Java đều giống nhau trên mọi hệ máy. Hệ thống các thành phần của java cũng có tính di động cao - nó đƣợc viết bằng Java.
Tốc độ thực thi: Khi Sun Microsystems mô tả Java có tốc độ cao, có lẽ họ muốn nói về mã bytecode đƣợc thông dịch hiệu quả nhƣ thế nào ( Java thƣờng chạy nhanh hơn những ngôn ngữ lập trình thông dịch khác nhƣ Python, Perl, PHP...). Về tốc độ các applet hay chƣơng trình Java thì nói chung đều chậm hơn các chƣơng trình Java thì nói chung đều chậm hơn các chƣơng trình đƣợc biên dịch viết bằng C++, vì chƣơng trình này đã đƣợc tối ƣu hoá từ trƣớc cho hệ máy nhất định. Java đã phải trả giá về hiệu suất cho tính không phụ thuộc hệ của nó.
Đa luồng (multithreaded): Đa luồng có nghĩa là ngôn ngữ Java cho phép xây dựng trình ứng dụng, trong đó, nhiều quá trình có thể xảy ra đồng thời. Tính đa luồng cho phép các nhà lập trình có thể biên soạn phần mềm đáp ứng tốt hơn, tƣơng tác tốt hơn, và thực hiện theo thời gian thực.
Tính động (dynamic): Java động vì nó đƣợc thiết kế để đáp ứng với môi trƣờng tác nghiệp luôn trong tình trạng thay đổi. Khi có yêu cầu mới xuất hiện trên thị trƣờng, các loại đối tƣợng mới có thể đƣợc bổ sung vào ngay.