Hiển thị kết quả từ 1 đến 7 / 7
  1. #1
    Tham gia
    18-05-2011
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts

    Cần chú ý ! [Hỏi ngu] Máy ảo Java

    Theo mình biết thì khi viết chương trình bằng ngôn ngữ java, đầu tiên máy ảo java sẽ biên dịch chương trình thành mã bytecode rồi sau đó mới thông dịch mã bytecode này để ra kết quả, vì thế java có thể chạy được trên nhiều hệ điều hành. Mình có 1 thắc mắc là java chạy được trên nhiều hệ điều hành có đồng nghĩa với chạy được trên nhiều phần cứng khác nhau ko, vì mỗi phần cứng khác nhau có kiến trúc tập lệnh khác nhau. Mong mọi người giải đáp giúp mình, thanks
    Quote Quote

  2. #2
    Tham gia
    04-12-2004
    Location
    TP.HCM
    Bài viết
    5,242
    Like
    34
    Thanked 895 Times in 566 Posts
    Bạn đặt câu hỏi này làm mình muốn hỏi ngược: bạn đang có bao nhiêu phần cứng khác nhau? Bạn liệt kê ra xem thử. Và phần cứng của bạn muốn đề cập cụ thể là những món gì?

    Theo mình biết, Java chạy trên hầu hết các máy tính có mặt trên thị trường mà bạn hoặc các công ty thông thường có thể mua được. Việc tập lệnh gì đó thì bạn nên tìm hiểu ngôn ngữ lập trình cấp thấp hơn, ở Java bạn không cần quan tâm trừ khi bạn định viết lại máy ảo Java để cạnh tranh với Oracle.

    Nếu bạn không hài lòng với câu trả lời trên, nên tìm đọc Bách khoa toàn thư, bài nói về công nghệ Java.
    "bất khả tri"

  3. #3
    Tham gia
    01-07-2012
    Bài viết
    122
    Like
    10
    Thanked 27 Times in 26 Posts
    Đã gọi là "máy ảo" thì (về lí thuyết) nó phải che hết phần cứng chứ.
    Mà Java là WODE chứ không phải WORA (Write Once, Run Anywhere) đâu.

  4. #4
    Tham gia
    18-05-2011
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts
    Mình chưa hiểu lắm, mã bytecode là mã máy đúng ko, vậy có nghĩa là máy ảo java đã có sẵn tập lệnh của từng phần cứng khác nhau hả(vd MIPS, ARM,...) và khi chạy trên phần cứng nào thì sẽ tạo ra mã bytecode tương ứng với tập lệnh của phần cứng đó. Mình suy nghĩ như thế có đúng ko?

  5. #5
    Tham gia
    01-07-2012
    Bài viết
    122
    Like
    10
    Thanked 27 Times in 26 Posts
    Quote Được gửi bởi kimera View Post
    Mình chưa hiểu lắm, mã bytecode là mã máy đúng ko, vậy có nghĩa là máy ảo java đã có sẵn tập lệnh của từng phần cứng khác nhau hả(vd MIPS, ARM,...) và khi chạy trên phần cứng nào thì sẽ tạo ra mã bytecode tương ứng với tập lệnh của phần cứng đó. Mình suy nghĩ như thế có đúng ko?
    Mã bytecode cũng giống như cái mà VB6 gọi là P-Code và cái mà Micro$oft đang gọi là CLR vậy, tất cả đều phải dịch về mã máy hết.
    p/s: cái này thì nên xem cái mà ng` ta hay gọi là KTMT.

  6. #6
    Tham gia
    04-12-2004
    Location
    TP.HCM
    Bài viết
    5,242
    Like
    34
    Thanked 895 Times in 566 Posts
    Quote Được gửi bởi kimera View Post
    Mình chưa hiểu lắm, mã bytecode là mã máy đúng ko, vậy có nghĩa là máy ảo java đã có sẵn tập lệnh của từng phần cứng khác nhau hả(vd MIPS, ARM,...) và khi chạy trên phần cứng nào thì sẽ tạo ra mã bytecode tương ứng với tập lệnh của phần cứng đó. Mình suy nghĩ như thế có đúng ko?
    Mã bytecode là mã trung gian, chưa phải là mã máy. Máy ảo Java sẽ biến mã này thành mã máy lúc thực thi. Và KHÔNG có chuyện khi chạy trên phần cứng nào thì sẽ tạo ra mã bytecode tương ứng với tập lệnh của phần cứng đó, bởi vì khi bạn chạy nghĩa là bạn đã chạy với mã bytecode rồi, bạn đã phải compile mã nguồn thành bytecode trước khi chạy bằng trình biên dịch javac trong bộ JDK. Bạn lo ngại về việc bạn viết Java ở máy này khi bỏ sang máy khác không chạy ư? Dĩ nhiên có trường hợp đó xảy ra trong thực tế: Java viết trên máy tính PC bỏ sang Android làm sao chạy khi bạn viết trên máy tính PC mà không dùng bộ phát triển cho Android, cái này là vấn đề của sự tự do trong phần mềm nguồn mở chứ không phải là vấn đề của ngôn ngữ lập trình, và người lập trình sẽ biết họ nên làm gì,...

    Một số người cẩn thận thì mang mã nguồn sang máy cần chạy, và compile nó trên máy đó để ra thành bytecode để chạy. Nếu một đơn vị viết ưngs dụng Java để bán cho đơn vị khác, dĩ nhiên họ sẽ có hướng dẫn để khách hàng của họ biết nên làm thế nào để chạy được phần mềm họ viết.

    Mà lạ, tại sao bạn cứ quan tâm gì việc máy ảo nó chứa tập lệnh gì?!, cái đó thì mua sách Kiến Trúc Máy Tính về đọc, hoặc bạn gửi email cho Oracle hỏi.
    Được sửa bởi superthin lúc 08:21 ngày 16-04-2013
    "bất khả tri"

  7. #7
    Tham gia
    18-05-2011
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts
    Ah, cái này là tò mò muốn hỏi cho biết thôi bạn. Cảm ơn bạn đã trả lời giúp mình, thanks

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •