STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    Tổng Quan về Ngôn Ngữ Lập Trình Java

    Java là 1 trong những ngôn ngữ lập trình mạnh mẽ, được sử dụng rộng rãi trong phát triển phần mềm, các hệ thống backend, game hay ứng dụng trên các thiết bị di động.
    20/05/2015
    19/09/2020
    6 phút đọc
    Tổng Quan về Ngôn Ngữ Lập Trình Java

    Ngôn ngữ lập trình Java rất lớn mạnh về độ phổ biến và sự hỗ trợ cùng với tuổi đời với bề dày cập nhật. Java Virtual Machine và Bytecode cũng là thành phần cực kỳ quan trọng trong câu chuyện của Java.

    Lược sử ngôn ngữ lập trình Java

    Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem năm 1991. Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm gia dụng, và có tên là Oak.

    Java được tạo ra với tiêu chí "Viết (code) 1 lần, thực thi khắp nơi" ("Write Once, Run Anywhere"  - WORA). 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 1 môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗ trợ nền tảng đó - theo wikipedia.

    Java được phát hành năm 1994, đến năm 2010 được Oracle mua lại từ Sun MicroSystem.

    Đặc điểm của ngôn ngữ lập trình Java

    1. Giống như C++, hướng đối tượng hoàn toàn

    Trong quá trình tạo ra 1 ngôn ngữ mới phục vụ cho mục đích chạy được trên nhiều nền tảng, các kỹ sư của Sun MicroSystem muốn tạo ra 1 ngôn ngữ dễ học và quen thuộc với đa số người lập trình. Vì vậy họ đã sử dụng lại các cú pháp của C và C++.

    Tuy nhiên, trong Java thao tác với con trỏ bị lược bỏ nhằm đảm bảo tính an toàn và dễ sử dụng hơn. Các thao tác overload, goto hay các cấu trúc như struct và union cũng được loại bỏ khỏi Java. Các vấn đề này xin được làm rõ ở những bài viết sau.

    2. Độc lập phần cứng và hệ điều hành

    1 chương trình viết bằng ngôn ngữ Java có thể chạy tốt ở nhiều môi trường khác nhau. Gọi là khả năng cross-platform. Khả năng độc lập phần cứng và hệ điều hành được thể hiện ở 2 cấp độ là cấp độ mã nguồn và cấp độ nhị phân.

    • Ở cấp độ mã nguồn: kiểu dữ liệu trong Java nhất quán cho tất cả các hệ điều hành và phần cứng khác nhau. Java có riêng 1 bộ thư viện để hỗ trợ vấn đề này. Chương trình viết bằng ngôn ngữ Java có thể biên dịch trên nhiều loại máy khác nhau mà không gặp lỗi.
    • Ở cấp độ nhị phân: 1 mã biên dịch có thể chạy trên nhiều nền tảng khác nhau mà không cần dịch lại mã nguồn. Tuy nhiên cần có Java Virtual Machine để thông dịch đoạn mã này.

    3. Ngôn ngữ thông dịch

    Ngôn ngữ lập trình thường được chia ra làm 2 loại, tùy theo cách hiện thực hóa ngôn ngữ đó, là ngôn ngữ thông dịch và ngôn ngữ biên dịch. Ngôn ngữ lập trình Java thuộc loại ngôn ngữ thông dịch. Chính xác hơn, Java là loại ngôn ngữ vừa biên dịch vừa thông dịch, cụ thể như sau:

    1. Khi viết mã trên 1 file .java, khi biên dịch mã nguồn của chương trình sẽ được biên dịch ra Bytecode.
    2. Máy ảo Java (Java Virtual Machine) sẽ thông dịch mã byte code này thành machine code (hay native code) khi nhận được yêu cầu thực thi chương trình.
    Biên dịch và thông dịch Java.
    .java -> Bytecode -> Machine code

    Ưu điểm

    Phương pháp này giúp các đoạn mã viết bằng Java có thể chạy được trên nhiều nền tảng khác nhau, với điều kiện là JVM có hỗ trợ chạy trên nền tảng này.

    Nhược điểm

    Cũng như các ngôn ngữ thông dịch khác, quá trình chạy các đoạn mã Java là chậm hơn các ngôn ngữ biên dịch khác (tuy nhiên vẫn ở trong 1 mức chấp nhận được).

    4. Cơ chế thu gom rác tự động

    Khi tạo ra các đối tượng trong Java, JRE sẽ tự động cấp phát không gian bộ nhớ cho các đối tượng ở trên heap.

    Với ngôn ngữ như C/C++, phải yêu cầu hủy vùng nhớ mà đã cấp phát để tránh việc thất thoát vùng nhớ. Tuy nhiên không phải lúc nào cũng có thể làm được điều đó như sơ sót hoặc kiến trúc đang code không cho phép dẫn đến việc thất thoát và làm giảm hiệu năng chương trình.

    Java hỗ trợ điều đó, không phải hủy các vùng nhớ thủ công. Bộ thu dọn rác của Java sẽ theo vết các tài nguyên đã được cấp. Khi không có tham chiếu nào đến vùng nhớ, bộ thu dọn rác sẽ tiến hành thu hồi vùng nhớ đã được cấp phát theo định kỳ.

    5. Đa luồng

    Java hỗ trợ lập trình đa tiến trình (multithread) để thực thi các công việc đồng thời, và cung cấp giải pháp đồng bộ giữa các tiến trình (giải pháp sử dụng priority, ...).

    6. Tính an toàn và bảo mật

    Tính an toàn

    Ngôn ngữ lập trình Java yêu cầu chặt chẽ về kiểu dữ liệu:

    • Dữ liệu phải được khai báo tường minh.
    • Không sử dụng con trỏ và các phép toán với con trỏ.
    • Java kiểm soát chặt chẽ việc truy xuất mảng, chuỗi, không cho phép sử dụng các kỹ thuật tràn, do đó các truy xuất sẽ không vượt quá kích thước của mảng hoặc chuỗi.
    • Quá trình cấp phát và giải phóng bộ nhớ được thực hiện tự động.
    • Cơ chế xử lý lỗi giúp việc xử lý và phục hồi lỗi dễ dàng hơn.

    Tính bảo mật

    Java cung cấp 1 môi trường quản lý chương trình với nhiều mức khác nhau:

    • Mức 1: chỉ có thể truy xuất dữ liệu cũng như phương phức thông qua giao diện mà lớp cung cấp.
    • Mức 2: trình biên dịch kiểm soát các đoạn mã sao cho tuân thủ các quy tắc của ngôn ngữ lập trình Java trước khi thông dịch.
    • Mức 3: trình thông dịch sẽ kiểm tra mã byte code xem các đoạn mã này có đảm bảo được các quy định, quy tắc trước khi thực thi.
    • Mức 4: Java kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống.

    Java Virtual Machine

    Nói về Java mà không nói đến JVM (Java Virtual Machine) thì quả là 1 thiếu sót. Tuy nhiên trong phạm vi bài viết này, xin được tóm gọn lại 1 số đặc điểm cơ bản của chiếc máy ảo Java này. Các vấn đề cụ thể sẽ được đề cập ở những bài viết sau.

    • Máy ảo Java là phần mềm giả lập máy tính, nó tập hợp các lệnh logic để xác định hoạt động của máy.
    • Có thể xem nó như là 1 hệ điều hành thu nhỏ.
    • JVM chuyển mã byte code thành machine code tùy theo môi trường tương ứng (gọi là khả năng khả chuyển).
    • JVM cung cấp môi trường thực thi cho chương trình Java (gọi đó là khả năng độc lập với nền).
    • Sun MicroSystem chịu trách nhiệm thiết kế, phát triển các máy ảo Java chạy trên các hệ điều hành cũng như kiến trúc phần cứng khác nhau, điều này cho thấy có khá nhiều loại máy ảo Java.

    Tham khảo

    • Cay S. Horstmann, Gary Cornell. Core Java™ 2: Volume I – Fundamentals, Prentice Hall, 2002
    • H. M. Deitel. Java™ How to Program, Prentice Hall, 2004
    0
    Java

    Java

    Tổng hợp các bài viết Java hữu ích

    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích.. Tìm hiểu thêm.

    Đề xuất

    Tổng Quan Về Ngôn Ngữ Lập Trình JavaScript
    Tìm hiểu tổng quan ngôn ngữ lập trình JavaScript và tầm quan trọng của ...
    14/11/2015
    Tổng Quan về PHP
    Tìm hiểu tổng quan về ngôn ngữ lập trình PHP.

    Khám phá

    Các Ngôn Ngữ Lập Trình Game
    Bài viết giới thiệu các ngôn ngữ lập trình game cho lập trình viên như ...
    03/07/2020
    Những Ngôn Ngữ Lập Trình Phổ Biến
    Giới thiệu các ngôn ngữ lập trình đáng để học và phục vụ công việc, xây ...
    Thế nào là Ngôn ngữ Lập trình?
    Tìm hiểu cách máy tính làm việc của máy tính thông qua ngôn ngữ lập ...
    25/08/2015
    Sơ Lược về Phong Cách Lập Trình
    Bài viết là một vài chia sẻ về cách hình thành phong cách lập trình để ...
    C# - Vì Sao Lại Chọn C Sharp
    Ngôn ngữ lập trình C# được xây dựng bởi Microsoft có thiết kế mạnh mẽ có ...
    String trong Java
    Giới thiệu về kiểu chuỗi và kỹ thuật thao tác với chuỗi trong ngôn ngữ ...
    06/05/2015
    Học Lập Trình Nên Bắt Đầu Từ Đâu?
    Học lập trình nên bắt đầu từ đâu? Lựa chọn học từ nền tảng có phải luôn ...
    Lập Trình Multithreading trong Ngôn Ngữ Lập Trình Java
    Để đáp ứng được yêu cầu thực hiện được nhiều tác vụ cùng một lúc, Java ...
    19/11/2015
    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020