Tìm hiểu ngôn ngữ lập trình Java, chia sẻ tài liệu học cơ bản.

Tìm hiểu ngôn ngữ lập trình Java, chia sẻ tài liệu học cơ bản.

Ngôn ngữ lập trình Java là gì?

Ngôn ngữ lập trình Java là một ví dụ đáng kể cho quá trình tiến hóa của ngôn ngữ lập trình. Java được xây dựng trên những đặc tính hữu dụng và quen thuôc của C++, trong đó Java loại bỏ những phức tạp, nguy hiểm, và các phần tử thừa không cần thiết. Kết quả Java là một ngôn ngữ an toàn hơn, đơn giản hơn và dễ sử dụng hơn. Những phần sau đây sẽ mô tả tính tương phản của Java với ngôn ngữ lập trình C++. Nhưng trước hết chúng ta cần điểm qua các mặt nổi bật khiến Java trở thành ngôn ngữ được sử dụng thuộc hàng top trong cộng đồng lập trình nói riêng và các cty phát triển ứng dụng nói chung.

Java thân thiện và đơn giản.

Nếu từng đã lập trình trên C/C++, ban sẽ nhanh chóng nhận thấy rằng java lôi cuốn hơn nhiều. Vì Java phản ánh trung thực cú pháp của C++, nên bạn có thể viết chương trình Java trong vái phút. Chưng trình đầu tiên của bạn sẽ được viết một cách nhanh chóng  và dễ dàng với rất ít đầu tư về lập trình.

Ban sẽ có cảm giác là loại bỏ được rất nhiều bừa bộn trong chương trình của mình. Tất cả những tập tin header và câu lệnh khai báo trước khó hiểu của C và C++ đã không còn. Các câu lệnh #definetypedefs cũng rũ cánh bay đi. Bạn sẽ không còn phải lần qua nhiều mức tập tin header để tham khảo API. Và cũng không ai phài gắng chịu để hình dung cách sữ dụng phần mềm của bạn.

So sánh Java và C++
So sánh Java và C++

Các chương trình Java chỉ việc nhập những gói phần mềm cần dùng. Những package này có thể ở trong một thư mục khác hoặc ở trong 1 project khác, trên những ổ đĩa khác hoặc đâu đó được chia sẽ trên internet, Github chẳng hạn. Trình biên dịch và trình thông dịch Java sẽ tìm ra những đối tượng được tham chiếu đến và tạo ra các liên kết cần thiết.

Java là ngôn ngữ thuần hướng đối tượng.

Nếu bạn nghĩ rằng C++ là một ngôn ngữ lập trình hướng đối tượng, thì bạn sẽ rất ngạc nhiên. Sau khi dùng Java viết một vài chương trình, bạn sẽ cảm nhận nhiều hơn về phần mềm hướng đối tượng này.

Java để cập đến lớp và đối tượng, thật rỏ ràng và đơn giản. Chúng không chỉ có nhiều cấu trúc dữ liệu khả dụng cho người lập trình mà còn là cơ sơ cho ngôn ngữ lập trình toàn diện.

Trong C++, ban dễ dàng khai báo một class nhưng không bắt buộc. Thay vì vậy bạn có thể khai báo một cấu trúc hay một hợp nhất (union). bạn khai báo một cụm biến phối hợp lỏng lẻo và dùng chúng với các hàm kiểu C. Trong Java, lớp đối tượng là trung tâm của ngôn ngữ. Những thứ khác phát triển chung quanh chúng. Bạn không thể khai báo các hàm và thủ tục. Chúng không tồn tại. Bạn cũng không thể dùng cấu trúc, hợp nhất, hoặc định nghĩa trước (typedefs). Chúng đã bị loại bỏ. Hoặc là bạn dùng lớp và đối tượng hoặc là ban không dùng Java. Đơn giản chỉ có vậy.

Mô Hình Lập Trình OOP Hướng Đối Tượng Trong Java
Mô Hình Lập Trình OOP Hướng Đối Tượng Trong Java

Java cung cấp đầy đủ mọi thứ để lập trình hướng đối tượng: cấu trúc phân tầng cho lớp, sự kế thừa, đóng gói và tính đa hình. Trong một phạm vi nào đó thì nó thật hữu dụng và hiệu quả. Nếu chưa quen về lập trình hương đối tượng bạn có thể tìm thây những khái niệm này tại đây: “lập trình hướng đối tượng”. Lý do chính cho việc phát triển phần mềm theo hướng hướng đối tượng ngoài việc minh bạch rỏ ràng, đơn giản điểm mạnh chính là khả năng dùng lại và mở rộng những gì đã có. Khi viết bất kì phần mềm nào dù đơn giản hay phức tạp bạn đều phải xây dựng trên những lớp cơ bản và API mà Java cung cấp.

Một khi đã phát triển phần mềm bằng Java, bạn có 2 cách lựa chọn:

  • Xây dựng trên những lớp bạn đã từng phát triển, bằng cách này bạn có thể sử dụng lại chúng.
  • Viết lại từ đầu phần mềm của bạn, sao chép và sửa đổi những thành phần hữu dụng của phần mềm đang tồn tại.

Cầu trúc hướng đối tượng của Java giúp bạn phát triển những phần mềm hữu dụng hơn, có tính kết nối hơn và đơn giản hơn.

Java an toàn và tin cậy hơn.

Java an toàn hơn C++ vì Java tránh cho ban những gì mà bạn xử lý dở đồng thời tạo điều kiện thuận lợi cho bạn làm tốt công việc.

Java sẽ không tự động chuyển đổi kiểu dữ liệu. Bạn phải chuyển một cách rõ ràng từ lớp này đến lớp khác. Dưới những điều kiện không mong muốn, C++ sẽ chuyển đổi tự động từ kiều này sang kiểu khác. Nó có tất cả những tính mềm dẻo của mã hợp ngữ. Java không cho rằng bạn biết những gì bạn đang làm. Kiểu dữ liệu string trong java là minh chứng rõ nét cho việc kiểm xoát chặt chẽ khai báo dữ liệu trong Java.

Java là ngôn ngữ lập trình an toàn
Java là ngôn ngữ lập trình an toàn

Con trỏ trong C++ không tồn tại trong Java. Bạn không thể truy cập các đối tượng một cách gián tiếp hay tình cờ nữa. Ban không cần phải làm như vậy. Ban khai báo những đối tượng và tham chiếu đến đối tượng đó một cách trực tiếp. Tránh sử dụng chuỗi con trỏ phức tạp. Nếu cần liệu kê tập hợp những đối tượng bạn có thể dùng array list – mảng đối tượng. Khái niệm “địa chỉ của một đối tượng” bị loại bỏ ra khỏi mô hình lập trình. Kết quả là có thể dễ dàng hơn nhiều để làm việc một cách chính xác trong Java.

Mức độ tin cậy của Java vượt qua khỏi cấp độ ngôn ngữ, đạt tới cấp độ trình biên dịch và hệ thống thực thi. Các kiểm tra lúc biên dịch kiểm tra phát hiện nhiều lỗi thảo chương không tìm thấy trong những ngôn ngữ thảo chương khác. Các kiểm tra này vượt hơn hẳn kiểu kiểm tra cú pháp để đảm bảo mệnh đề đúng về mặt ngữ nghĩa.

Kiểm tra thời gian thực thi cũng bao quát và hiệu quả hơn. Hãy nhớ lời dặn “Kiểm tra hai lần công việc để đảm bảo đúng”.  Trình liên kết của Java nhận biết các kiểu lớp và thực hiện việc kiểm tra kiểu trên cấp độ biên dịch. Nó cũng kiểm tra các ràng buộc và loại bỏ truy cập đối tượng gián tiếp., thậm chí dưới điều kiện lỗi.

Java có tính an ninh được xác thực qua JVM(JAVA VIRTUAL MACHINE).

Trường hợp bạn đưa một chương trình viết bằng C hoặc C++, cho một hacker và bảo anh ta tìm những chổ thiếu an toàn, chắc chắn anh ta sẽ chi ra ngay lập tức khoảng sau chổ khiến C++ là ngôn ngữ thích hợp để tạo nên các chương trình phá hoại: truy xuất trực tiếp tới hệ điều hành, trả về những điều khiển không mong đợi, ghi đè lên những vùng nhớ không mong đợi, có khả năng đánh lừa hay sửa chữa những chương trình khác, duyệt những thông tin an toàn, và truy cập không hợp lệ đến hệ thống tập tin…

Kiến trúc Java Virtual Machine
Kiến trúc Java Virtual Machine

Tại sao C và C++ không an toàn hơn Java? Khi một nhà lập trình phát triển một phần mềm, anh ta luôn hướng tới mục tiêu làm sao để phần mềm hoạt động chính xác và hiệu quả. C và C++ không không chế người lập trình đạt đến mục tiêu đó, nó chỉ cung cấp một số đặc tính linh hoạt cho phép người lập trình đạt đến mục đích đó. Những kẻ phá hoại đã thừa nước đục thả câu, tận dụng các đặt tính đó ngược lại, đó chính là nguyên nhân gây ra những rắc rối như đã đề cập trên. C và C++ có tính công phá hơn nhưng lại không được bảo vệ, còn Java đã được biên dịch, chẳng hạn một chương trình con (applet_, nó có thể rủi ro khi thi hành đoạn mã loại Trojan horse. Do đó mối đe dọa như vậy, nên nó phải đưa ra đoạn mã để kiểm tra hầu đảm bảo cho tính đúng đắn và an toàn.

Hệ thống thực thi của Java(JVM) được thiết kế để đảm bảo cho chính sách an toàn, ngăn ngừa thực thi những đoạn mã có hại. Hệ thống làm được điều này bằng cách ghi nhớ cách thức đối tượng được lưu trong bộ nhớ và chú ý đến việc truy cập chính xác và an toàn những đối tượng theo các quy định về an toàn. Hệ thống thực hiện việc kiểm tra các mã bytes bằng cách chuyển những lớp đã được biên dịch qua một bộ minh chứng đơn giản để kiểm chứng đoạn mã đó là an toàn hoặc ngăn không cho đoạn mã được thi hành. Lớp là đơn vị thực thi cơ bản của Java và độ an toàn được thực hiện ở mức lớp.

Hệ thống thực thi của Java Virtual Machine cũng cô lập phần mềm theo nguồn gốc của nó. Những lớp ở hệ thống cục bộ được xử lý riêng biệt tách khỏi những lớp của hệ thống khác. Điều nay ngăn ngừa hệ thống ở xa thay thế phần mềm của hệ thống cục bộ với mã ít tin cậy hơn.

Những trình duyệt sử dụng JAVA cho phép người dùng kiểm soát được các truy cập mà phần mềm Java thực hiện ở hệ thống cục bộ. Khi một chương trình con của Java cần quyền truy cập đến một nguồn tài nguyên cục bộ của hệ thống, chẳng hạn những tập tin, thì một hôp thoại an toàn hiển thị đến người dùng, yêu cầu quyền truy cập cảu người dùng. Giài pháp này bảo đảm cho người dùng luôn luôn có được tiếng nói cuối cùng trong hệ thống an toàn của họ.

Java hỗ trợ lập trình đa luồn (multithread) mạnh mẽ

Java giống như Ada và không giống các ngôn ngữ khác. Java hỗ trợ ngôn ngữ sẵn có cho lập trình đa luồng. Đa luồng (multithread) cho phép nhiều hơn một luồng (thread) thực thi trong một chường trình đơn. Điều này cho phép chương trình của bạn cùng lúc làm được nhiều việc: vừa nghe nhạc, vừa viết tài liệu và vừa quét virut. Lập trình đa luồng là một đặc tính quan trọng vì nó cho phép người dùng nó viết chương trình như những luồng độc lập hơn là hoạt động chồng chéo lên nhau. Đặc tính đa luồng còn cho phép Java dùng thời gian rãnh của CPU để thực thi các công việc như thu gom rác (Garbage Collection) và duy trì hệ thống chung, cho phép những chức năng này được thực hiện với ành hường thấp nhất của chương trình.

Trình thu gom rác của ngôn ngữ Java
Trình thu gom rác của ngôn ngữ Java

Viết những chương trình đa luồng cũng giống như cùng lúc hẹn với nhiều người. Mọi công việc đều tốt đẹp cho đến khi những luồng này bắt đầu tường tác với nhau không như mong đợi, Java có những đặc tính hỗ trợ cần thiết để làm cho đặc tính đa luồng làm việc an toàn và chính xác. Java hỗ trợ đa luồng làm việc an toàn và chính xác. Java hỗ trợ đa luồng bằng cách cung cấp những khả năng đồng bộ hóa để đảm bảo rằng những luồng chia sẽ thông tin và thời gian thực thi trong một phạm vi an toàn.

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.