Phát triển Java hiệu quả cho Raspberry Pi: 11 bước (có hình ảnh)
Phát triển Java hiệu quả cho Raspberry Pi: 11 bước (có hình ảnh)
Anonim

Có thể hướng dẫn này mô tả một cách tiếp cận rất hiệu quả để phát triển các chương trình Java cho Raspberry Pi. Tôi đã sử dụng cách tiếp cận để phát triển các khả năng của Java, từ hỗ trợ thiết bị cấp thấp đến các chương trình đa luồng và dựa trên mạng. Phương pháp này không chỉ hiệu quả mà còn miễn phí!

Về cơ bản, cách tiếp cận là phát triển từ xa bằng cách sử dụng NetBeans. NetBeans chạy trên máy trạm (máy tính để bàn hoặc máy tính xách tay, không phải Raspberry Pi) được kết nối qua Wifi với Raspberry Pi. Khi mọi thứ được thiết lập đúng cách, bạn có thể viết một chương trình Java trong NetBeans và sau đó chỉ với một cú nhấp chuột để biên dịch và xây dựng chương trình trên máy trạm, tải chương trình xuống Pi, chạy chương trình trên Pi và cung cấp đầu ra cho bảng điều khiển NetBeans. Ảo thuật! Bạn thậm chí có thể gỡ lỗi chương trình đang chạy, thiết lập các điểm ngắt và kiểm tra các giá trị biến. Kỳ diệu hơn!

Phần còn lại của phần giới thiệu này mô tả động lực để sử dụng Java và phát triển từ xa bằng NetBeans. Nếu bạn quan tâm đến động lực, hãy đọc tiếp. Nếu bạn không quan tâm, hãy chuyển sang bước 1.

Tại sao sử dụng Java trên Raspberry Pi?

Có nhiều ngôn ngữ lập trình có sẵn cho Raspberry Pi, nhưng tôi sẽ giới hạn cuộc thảo luận ở các ngôn ngữ lập trình "cấp chuyên nghiệp" nhắm mục tiêu đến các chương trình độc lập, hỗ trợ đa tác vụ, cho phép phần cứng và truy cập mạng, v.v. Điều đó có nghĩa là Java, Python, hoặc C / C ++. Các bản phát hành gần đây nhất của Raspbian bao gồm hỗ trợ phát triển và thời gian chạy cho tất cả các ngôn ngữ này.

Trên thực tế, Python được "khuyến khích" sử dụng trên Pi, ít nhất là một phần vì nó dễ học cho các lập trình viên mới. Tôi là một lập trình viên có kinh nghiệm và không thích Python do thừa nhận chủ quan không thích một số đặc điểm của nó, chẳng hạn như gõ động. Có một đặc điểm của Python mà tôi không thích là tính khách quan - hiệu suất. Nguồn này cho thấy Java luôn nhanh hơn Python 3, và trên thực tế có thể chạy nhanh hơn hàng trăm lần, tùy thuộc vào tác vụ.

Theo ý kiến của tôi, C là một "ngôn ngữ máy cấp cao", tức là một thứ gì đó rất gần với phần cứng hệ thống, hoặc ít nhất là hệ điều hành. Bạn có thể làm bất cứ điều gì, và bạn có thể làm điều đó càng nhanh càng tốt; trên thực tế, nguồn này cho thấy C có thể chạy nhanh gấp 7 lần Java. Tôi cũng không thích C vì tôi (chủ quan) không thích một số đặc điểm của nó mà tôi thấy khó hiểu, cổ xưa hoặc cả hai; ví dụ, con trỏ rõ ràng. Về mặt khách quan, thực tế là bạn có thể làm bất cứ điều gì có nghĩa là bạn chỉ là một lỗi khó hiểu (ví dụ: số học con trỏ kém hoặc bản ghi nhớ sai) tránh ghi đè bộ nhớ và có khả năng làm hỏng chương trình hoặc thậm chí toàn bộ hệ thống. Java ngăn chặn những mối nguy hiểm như vậy, vì vậy Java an toàn hơn. Tôi cảm thấy sự an toàn cũng cải thiện năng suất của lập trình viên. Tôi coi C ++ là một "trình bao bọc" hướng đối tượng xung quanh C mà không làm gì để loại bỏ các mối nguy hiểm của C.

Điểm mấu chốt: Java nhanh hơn Python. Java an toàn hơn C.

Có giới hạn nào khi sử dụng Java không?

Cho đến nay, tôi đã có thể làm mọi thứ bằng Java mà tôi có thể làm bằng Python. Có những điều mà người ta có thể làm trong C mà người ta không thể làm trong Java, nhưng một lần nữa, cho đến nay mọi thứ tôi muốn làm đã được giải quyết bởi những người hâm mộ Java trong cộng đồng Pi. Tôi sẽ đưa ra một ví dụ ở bước sau. Điều đó nói rằng, tôi đã mua cảm biến từ các nhà cung cấp cung cấp "trình điều khiển" cho cảm biến chỉ bằng Python (hoặc C / C ++ cho Arduino), vì vậy tôi phải viết Java tương đương; nỗ lực thêm không nhất thiết mang lại hiệu quả, nhưng có thể mang lại cái nhìn sâu sắc hơn về hoạt động của cảm biến.

Tại sao phát triển từ xa dựa trên NetBeans?

Tôi nhận thấy rằng phát triển từ xa dựa trên NetBeans làm tăng đáng kể năng suất khi sử dụng Java cho Raspberry Pi. Tôi tin tưởng rằng bạn có thể sử dụng phương pháp này để tạo các chương trình nhanh và an toàn, do các đặc tính vốn có của Java, đồng thời viết, xây dựng và gỡ lỗi chúng nhanh hơn nhiều so với các phương pháp khác mà tôi đã tìm thấy, do phát triển từ xa bằng cách sử dụng chuyên nghiệp cấp “Môi trường phát triển tích hợp NetBeans (IDE).

Có thể hữu ích nếu thảo luận ngắn gọn về những "cách tiếp cận khác". Tất cả đều đáp ứng các tiêu chí cơ bản mà Raspberry Pi không có bàn phím, chuột, màn hình kết nối. Có nhiều lý do cho tiêu chí này, nhưng lý do chính của tôi là tôi phát triển rô bốt di động và tôi không muốn Pi kết nối với bất kỳ thiết bị ngoại vi nào ngoại trừ hệ thống con rô bốt, ngay cả trong quá trình phát triển.

Máy chủ VNC có trong Raspbian cung cấp giao diện người dùng đồ họa từ xa (GUI) cho phép hình thức phát triển từ xa, nơi chỉ GUI từ xa chạy trên máy trạm và mọi thứ khác, viết, biên dịch và xây dựng, đều diễn ra trên Pi. Với VNC, thật dễ dàng để sử dụng các công cụ phát triển hỗ trợ Java có sẵn trong Raspbian, như BlueJ, Geany và Greenfoot. Một số trong số này có thể được coi là một IDE; tuy nhiên, tôi thấy chúng khác xa so với cấp độ chuyên nghiệp.

Về mặt kỹ thuật, có thể cài đặt Java IDE chuyên nghiệp như Eclipse hoặc NetBeans trên Raspberry Pi và sử dụng nó từ xa thông qua VNC. Các báo cáo, và theo lẽ thường, cho thấy rằng kết quả sẽ đáng thất vọng, do dung lượng bộ nhớ lớn và sức mạnh CPU như IDE yêu cầu, cũng như độ trễ mạng do GUI từ xa đưa vào.

Cả Eclipse và NetBeans đều chạy rất tốt trên máy trạm. Với Eclipse, viết mã là một trải nghiệm thú vị, tuy nhiên, việc xây dựng chương trình thì không; tải xuống chương trình phải diễn ra bên ngoài Eclipse; việc thực thi chương trình trên Pi hoàn toàn độc lập với Eclipse. Kết quả chung là một quá trình gồm nhiều bước, gần như đau đớn, không thể hỗ trợ gỡ lỗi từ xa. NetBeans tích hợp sẵn trình biên dịch, xây dựng, tải xuống, thực thi từ xa và gỡ lỗi từ xa, làm cho nó trở thành một phương pháp tiếp cận ưu việt.

Bước 1: Thiết lập Raspberry Pi

Để sử dụng phương pháp phát triển từ xa, bạn phải bắt đầu bằng cách thiết lập Raspberry Pi đích. Có nhiều tài nguyên, bao gồm cả các tài liệu hướng dẫn, có sẵn để hỗ trợ thiết lập Raspberry Pi. Xem phần này để biết cơ bản về cách thiết lập Pi (và hơn thế nữa).

Điều này có thể hướng dẫn giả định bạn

  • cài đặt Raspbian mới nhất; đảm bảo bạn ghi lại ID người dùng và mật khẩu Pi
  • thiết lập Wifi và kết nối với bộ định tuyến của bạn (xem phần này); đảm bảo rằng bạn ghi lại địa chỉ IP của Pi
  • bật SSH (xem phần này) để cho phép truy cập từ xa vào Pi từ máy trạm

Sau khi hoàn tất thiết lập, bạn có thể tắt nguồn và ngắt kết nối màn hình, bàn phím và chuột khỏi Pi. Đây là một trong những lợi thế quan trọng để phát triển từ xa. Bạn phải kết nối bất kỳ khóa Wi-Fi nào (tất nhiên là không cần thiết đối với Pi kiểu 3 hoặc Pi Zero W), sau đó bạn mới có thể bật nguồn cho Pi.

Để kiểm tra, hãy mở một ứng dụng ssh trên máy trạm của bạn, ví dụ: Terminal trên MacOS hoặc putty trên Windows. Sau đó nhập lệnh ssh (secure shell) theo mẫu sau:

ssh the_pi_ip_address -l the_pi_user_id

Bạn sẽ nhận được lời nhắc nhập mật khẩu ID người dùng Pi của mình. Nếu không có lời nhắc nào xuất hiện, hãy kiểm tra để đảm bảo bạn đã nhập đúng địa chỉ IP trong lệnh ssh. Nhập mật khẩu của bạn (mật khẩu sẽ bị ẩn) và sau đó bạn sẽ thấy lời nhắc trình bao của Pi xuất hiện như sau:

pi @ raspberrypi: ~ $

Nếu bạn không thấy lời nhắc, hãy kiểm tra ID người dùng và mật khẩu bạn đã sử dụng.

Bây giờ bạn phải tìm đường dẫn đến thời gian chạy Java và xác nhận phiên bản mặc định là Java 8 (phải đúng với Raspbian mới nhất). Để tìm đường dẫn thời gian chạy Java, trong máy khách ssh, hãy nhập lệnh

sudo update-Alternatives --display java

Bạn sẽ thấy một phản hồi có hai dòng đầu tiên giống như sau:

java - chế độ tự động

liên kết phiên bản tốt nhất là / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / bin / java

"-8-" trong dòng thứ hai xác nhận rằng thời gian chạy mặc định là Java 8. Ghi lại đường dẫn trong dòng thứ hai vì bạn sẽ cần nó để cấu hình NetBeans cho phát triển từ xa trong bước sau.

Nếu thời gian chạy mặc định không phải là Java 8, trong máy khách ssh, hãy nhập lệnh sau để chuyển sang Java 8 (giả sử nó đã được cài đặt)

sudo update-Alternatives --config java

Bước 2: Cài đặt NetBeans trên máy trạm

Bây giờ bạn cần cài đặt NetBeans trên máy trạm của mình. Trỏ trình duyệt máy trạm của bạn đến trang tải xuống NetBeans. Bạn sẽ thấy một số gói có thể hỗ trợ hai phiên bản Java cũng như các ngôn ngữ khác. Tất cả những gì bạn cần để phát triển Java cho Raspberry Pi là Java SE, nhưng bạn có thể nhận gói Java EE hoặc gói Tất cả. Sau khi bạn quyết định gói nào bạn muốn, hãy nhấp vào nút Tải xuống tương ứng. Bạn có thể tìm thêm hướng dẫn cài đặt cho hệ điều hành máy trạm của mình tại đây.

Khi bạn đã cài đặt xong NetBeans, hãy khởi động nó (nó có thể tự động làm như vậy sau khi cài đặt). Bạn sẽ thấy cửa sổ chính của NetBeans như trong hình. Hình ảnh được chụp trên máy Mac và cửa sổ chính có thể trông hơi khác trên Windows.

Khi bạn đã cài đặt và khởi động NetBeans thành công, hãy chuyển sang bước tiếp theo.

Bước 3: Định cấu hình Raspberry Pi làm nền tảng từ xa trong NetBeans

Định cấu hình Raspberry Pi làm nền tảng từ xa trong NetBeans
Định cấu hình Raspberry Pi làm nền tảng từ xa trong NetBeans

Các hành động sau đây định cấu hình Raspberry Pi làm nền tảng Java SE từ xa cho NetBeans. Điều này cho phép NetBeans tải xuống và thực thi các chương trình Java trên Pi. Bạn có thể tìm thấy một mô tả hơi chung chung ở đây.

LƯU Ý: Trong các bước này và các bước sau, tôi hiển thị các giá trị cụ thể cho môi trường của tôi cho các khía cạnh khác nhau của cấu hình và mã hóa; của bạn rõ ràng sẽ khác.

Để định cấu hình Pi làm nền tảng từ xa:

  1. Trong thanh menu chính của NetBeans, chọn Công cụ -> Nền tảng Java. Bạn sẽ thấy cửa sổ bật lên Trình quản lý nền tảng Java (hình một).
  2. Nhấp vào Thêm nền tảng ở phía dưới bên trái. Bạn sẽ thấy cửa sổ bật lên Thêm Nền tảng Java [loại nền tảng] (hình hai).
  3. Chọn Phiên bản Tiêu chuẩn Java Từ xa. Bấm tiếp. Bạn sẽ thấy cửa sổ bật lên Thêm Nền tảng Java [thiết lập nền tảng từ xa] (hình ba hiển thị cửa sổ bật lên sau khi tôi nhập các giá trị thích hợp cho môi trường của mình vào các trường).
  4. Trong trường Tên nền tảng, hãy nhập tên cho số Pi. Bạn có thể sử dụng khá nhiều thứ, nhưng nó phải là duy nhất.
  5. Trong trường Máy chủ lưu trữ, hãy nhập địa chỉ IP cho số Pi được tìm thấy ở bước 1.
  6. Trong trường Tên người dùng, hãy nhập tên người dùng bạn đã sử dụng ở bước 1.
  7. Chọn Sử dụng Xác thực Mật khẩu và trong trường Mật khẩu, hãy nhập mật khẩu bạn đã tạo ở bước 1.
  8. Trong trường Đường dẫn JRE Từ xa, bạn phải nhập hầu hết đường dẫn đến thời gian chạy Java trên Pi. Trong bước 1, nó là / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / bin / java. Tuy nhiên, bạn phải bỏ / bin / java trong giá trị trường.
  9. NetBeans tải chương trình chạy được vào một thư mục làm việc trên Pi, được xác định trong trường Working Dir. Mặc định là / the_Pi_user_ID / NetBeansProjects / và nó hoàn toàn có thể chấp nhận được. Bạn có thể sử dụng một cái gì đó khác nếu bạn muốn, mặc dù nó phải có sẵn cho the_Pi_user_ID (hình 3).
  10. Nhấp vào Kết thúc ở dưới cùng bên phải của cửa sổ bật lên. Sau khi xử lý, một lần nữa bạn sẽ thấy cửa sổ bật lên Trình quản lý nền tảng Java. Bây giờ bạn sẽ thấy Pi điều khiển từ xa của mình (dưới tên bạn đã sử dụng trong hành động 4 ở trên) trong danh mục Remote Java SE (hình 4).
  11. Nhấp vào Nền tảng kiểm tra ở phía dưới bên trái để kiểm tra kết nối giữa NetBeans và Pi của bạn. Trước tiên, bạn sẽ thấy một cửa sổ bật lên cho biết Đang xác minh nền tảng từ xa. Nếu thành công, bạn sẽ nhận được một cửa sổ bật lên thứ hai cho biết Kết nối… đã được thiết lập thành công. Nếu không, bạn cần kiểm tra và sửa thông tin bạn đã nhập vào cửa sổ bật lên Thêm nền tảng Java [thiết lập nền tảng từ xa] trong các hành động 5-9 ở trên. Bạn có thể làm như vậy từ cửa sổ bật lên Trình quản lý nền tảng Java; chỉ cần chọn nền tảng Pi của bạn và sau đó chỉnh sửa các trường ở phía bên phải của cửa sổ bật lên.
  12. Sau khi kết nối thành công, hãy nhấp vào Đóng trong cửa sổ bật lên Trình quản lý nền tảng Java. Bây giờ bạn sẽ thấy cửa sổ chính của NetBeans.

Bây giờ niềm vui thực sự có thể bắt đầu!

Bước 4: Tạo một dự án Java trên máy trạm

Đây không phải là lời giải thích đầy đủ về cách sử dụng NetBeans hoặc Java, nhưng tôi sẽ mô tả các thao tác tối thiểu để viết một chương trình trong NetBeans trên máy trạm và cuối cùng, chạy chương trình từ xa trên Raspberry Pi.

Trong NetBeans, trước tiên bạn phải tạo một dự án để chứa (các) lớp Java cho chương trình. Hơn nữa, trong Java, các lớp nằm trong các gói để hỗ trợ tổ chức và bảo mật. Để tạo dự án và tùy chọn tạo gói và tệp lớp:

  1. Trong cửa sổ chính của NetBeans, nhấp vào biểu tượng dự án mới (thứ 2 từ trái sang). Bạn sẽ thấy cửa sổ bật lên Dự án mới [chọn dự án] (hình một).
  2. Các giá trị mặc định (Danh mục: Java, Dự án: Ứng dụng Java) là chính xác cho ví dụ này, vì vậy chỉ cần nhấp vào Tiếp theo. Bạn sẽ thấy cửa sổ bật lên Ứng dụng Java mới [tên và vị trí] (hình hai hiển thị các giá trị cho ví dụ của tôi). LƯU Ý: Tôi đã biên tập lại thông tin người dùng của mình bằng các hình chữ nhật màu.
  3. Trong trường Tên dự án, hãy nhập tên dự án Java hợp lệ mà bạn chọn. Tên phải bắt đầu bằng một chữ cái viết hoa và quy ước cho thấy trường hợp lạc đà khi nối các từ.
  4. Trường Vị trí dự án kiểm soát vị trí dự án nằm trong hệ thống tệp của bạn. Mặc định thay đổi tùy theo hệ điều hành, nhưng có thể chấp nhận một cách an toàn.
  5. Trường Thư mục Dự án cho phép bạn kiểm soát tên thư mục cho dự án. Tôi thấy tốt nhất nên sử dụng mặc định, là sự ghép nối của trường Vị trí và trường Tên.
  6. Khi hộp kiểm Tạo Lớp Chính được đánh dấu, NetBeans sẽ tự động tạo một gói và một tệp lớp chính (một chương trình có thể chạy từ dòng lệnh) có cùng tên với dự án. Tôi nghĩ rằng thông thường nó nên được bỏ chọn, nhưng trong trường hợp này, tôi sẽ để nó được chọn để loại bỏ các hành động rõ ràng nếu không cần thiết để làm như vậy (hình hai).
  7. Bấm Kết thúc để tạo dự án, gói và tệp lớp chính. Bây giờ, ngăn trên cùng bên trái của cửa sổ chính NetBeans hiển thị dự án của bạn, chứa một gói duy nhất, lần lượt chứa một tệp lớp duy nhất có phương thức main (). Khung trên cùng bên phải chứa mã nguồn mặc định cho lớp chính (chương trình) do NetBeans tạo tự động (hình 3).

Tại thời điểm này, bạn có thể viết một số mã trong phương thức chính và chạy nó trên máy trạm. Điều đó đôi khi có thể mong muốn, nhưng không cần thiết đối với Tài liệu hướng dẫn này, vì vậy hãy chuyển sang bước tiếp theo.

Bước 5: Định cấu hình Dự án NetBeans để chạy từ xa trên Raspberry Pi

Để định cấu hình dự án NetBeans và chương trình trong đó, chạy từ xa trên Raspberry Pi, hãy làm như sau:

  1. Nhấp chuột phải hoặc 2 ngón tay (tùy thuộc vào hệ điều hành máy trạm) vào dự án trong ngăn Dự án của cửa sổ chính NetBeans để hiển thị menu dự án và nhấp vào Thuộc tính. Bạn sẽ thấy cửa sổ bật lên Thuộc tính dự án (hình ảnh hiển thị cửa sổ bật lên với các giá trị thích hợp cho ví dụ của tôi).
  2. Trong Danh mục ở bên trái, hãy chọn Chạy.
  3. Nhấp vào Mới ở bên phải của trường Cấu hình. Trong cửa sổ bật lên Tạo cấu hình mới, nhập tên cho cấu hình và nhấp vào OK. Tên có thể là bất cứ điều gì; Tôi chỉ sử dụng lại tên của nền tảng ("Pi của tôi"). Một lần nữa, bạn sẽ thấy cửa sổ bật lên Thuộc tính dự án.
  4. Nhấp vào biểu tượng thả xuống ở bên phải của trường Runtime Platform. Từ danh sách trong cửa sổ bật lên, hãy chọn nền tảng từ xa mà bạn đã tạo trước đó (trong môi trường của tôi, "My Pi").
  5. Nhấp vào OK để thiết lập nền tảng từ xa cho dự án. Một lần nữa bạn sẽ thấy cửa sổ chính.

Bây giờ bạn đã sẵn sàng để viết mã và chạy chương trình từ xa.

Bước 6: Viết chương trình Java trên máy trạm và chạy nó trên Raspberry Pi

Bảng điều khiển bên phải trong cửa sổ chính của NetBeans hiển thị tệp lớp chính do NetBeans tạo ra. Nhập một câu lệnh in đơn giản trong phương thức chính của tệp lớp (hình một). Bây giờ nó là một chương trình Java hoàn chỉnh có thể thực hiện một việc gì đó, mặc dù một cái gì đó rất đơn giản.

Để chạy chương trình trên Pi, hãy nhấp vào biểu tượng Run (mũi tên màu xanh lá cây trỏ sang trái) trong cửa sổ chính. NetBeans biên dịch mã, xây dựng tệp jar, tải tệp jar xuống Raspberry Pi được nhận dạng bởi nền tảng từ xa, thực thi chương trình trên Pi, ghi lại kết quả đầu ra (System.out) của chương trình và lặp lại kết quả đầu ra tới NetBeans Ngăn đầu ra ở phía dưới bên phải của cửa sổ chính (hình hai).

Giờ đây, bạn đã mở rộng đáng kể bộ kỹ năng của mình để phát triển các dự án trên Raspberry Pi! Nhưng chờ đã…. Có nhiều!

Bước 7: Gỡ lỗi chương trình Java với NetBeans

Một trong những tính năng mạnh mẽ nhất của Môi trường phát triển tích hợp thế mạnh công nghiệp như NetBeans là khả năng gỡ lỗi chương trình khi đang chạy. NetBeans cho phép bạn tận dụng bộ công cụ gỡ lỗi đầy đủ trong khi chạy từ xa. Điều này bao gồm việc thiết lập các điểm ngắt tại các vị trí "quan trọng" hoặc "rắc rối" trong chương trình và kiểm tra giá trị của các biến ở trạng thái thực thi hiện tại.

Chương trình đơn giản trong bước cuối cùng quá đơn giản để chứng minh việc gỡ lỗi, vì vậy tôi đã thêm một số mã bổ sung vào chương trình. Mã bổ sung thêm hai biến.

Để tận dụng các công cụ gỡ lỗi, trước tiên bạn phải đặt một hoặc nhiều điểm ngắt. Để đặt điểm ngắt, hãy nhấp vào số dòng mà bạn muốn tạm ngừng thực thi; biểu tượng hình chữ nhật màu đỏ xuất hiện và toàn bộ dòng có nền màu đỏ (hình một).

Để gỡ lỗi chương trình đang chạy trên Pi, hãy nhấp vào biểu tượng Gỡ lỗi (ngay bên phải biểu tượng Chạy) trong cửa sổ chính của NetBeans. Như với quá trình thực thi thông thường, NetBeans biên dịch, xây dựng, tải xuống, thực thi, ghi lại đầu ra và lặp lại đầu ra đó. Nhưng với gỡ lỗi, NetBeans dừng thực thi tại các điểm ngắt và cho phép bạn kiểm tra trạng thái thực thi (hình hai, hiển thị ngăn Biến ở phía dưới bên phải).

Việc thực thi dừng tại điểm ngắt trước khi thực hiện lệnh trên dòng có điểm ngắt. Nền xanh cho biết câu lệnh tiếp theo sẽ được thực thi. Vì vậy, trong ví dụ của tôi, với một điểm ngắt ở dòng 9, biến a chưa tồn tại, ít hơn nhiều có một giá trị.

Bây giờ di con trỏ qua biểu tượng menu gỡ lỗi trong cửa sổ chính (biểu tượng mũi tên kép đầu tiên xuống bên phải của biểu tượng Gỡ lỗi) và nhấp vào biểu tượng Step Over (nó có một tài liệu màu xanh lam ở nền và mũi tên màu xanh lá cây ngược chiều kim đồng hồ ở phía trước). [LƯU Ý: nếu bạn đặt cửa sổ chính NetBeans của mình đủ rộng, menu gỡ lỗi sẽ mở rộng và biểu tượng hành động gỡ lỗi hiển thị ở bên phải biểu tượng Gỡ lỗi.] NetBeans thực hiện câu lệnh tại điểm ngắt và dừng thực thi trước câu lệnh tiếp theo. Bây giờ bạn sẽ thấy rằng biến a tồn tại và có giá trị mong đợi (hình 3).

Nhấp vào biểu tượng Bước qua hai lần. Bạn sẽ thấy rằng cả ba biến đều có giá trị; lưu ý rằng c vẫn là số không (hình 4).

Nhấp vào biểu tượng Bước qua một lần. Bạn sẽ thấy rằng biến c bây giờ có giá trị thích hợp, tức là tổng của các biến a và b (hình năm).

Cuối cùng, trong menu gỡ lỗi, nhấp vào biểu tượng Run (hình tròn màu xanh lục với mũi tên màu trắng). Điều đó khiến việc thực thi tiếp tục đến điểm ngắt tiếp theo hoặc đến cuối chương trình, tùy điều kiện nào đến trước. Bây giờ ngăn Đầu ra xuất hiện và hiển thị đầu ra giống như khi thực thi bình thường, trong trường hợp này là văn bản trong câu lệnh in.

Bước 8: Thực thi chương trình độc lập với NetBeans

Có thể đã đến lúc bạn muốn thực thi chương trình của mình trên Raspberry Pi mà không cần sự "hỗ trợ" hoặc "can thiệp" từ NetBeans. Nó rất đơn giản. Đầu tiên, mở một ứng dụng ssh cho Pi của bạn.

Hãy nhớ từ bước 3 rằng NetBeans đặt jar dự án của bạn trong một thư mục làm việc trên Pi. Cơ sở mặc định là / home / pi / NetBeansProjects cho người dùng pi. Thư mục cụ thể có cùng tên với dự án của bạn. NetBeans đặt jar trong một thư mục con được gọi là dist. Đối với ví dụ của tôi, đường dẫn đầy đủ là / home / pi / NetBeansProjects / MyRemoteProg / dist. Trong ứng dụng ssh trên Pi, để thực thi chương trình, bạn có thể sử dụng lệnh java với tùy chọn 'jar':

java -jar /home/pi/NetBeansProjects/MyRemoteProg/dist/MyRemoteProg.jar

Bạn sẽ thấy kết quả của quá trình thực thi trong máy khách ssh; trong ví dụ của tôi, đầu ra sẽ là

Xin chào từ Raspberry Pi!

Điều này hoạt động vì thông tin trong tệp jar xác định lớp chính nào trong jar để thực thi.

Bạn cũng có thể thay đổi thư mục làm việc (thông qua cd) thành vị trí của tệp jar và sau đó ra lệnh ngắn hơn để tạo ra kết quả tương tự.

java -jar MyRemoteProg.jar

Bước 9: Xây dựng và tải xuống, nhưng không thực thi chương trình qua NetBeans

Có những trường hợp bạn muốn NetBeans xây dựng và tải xuống chương trình của mình, nhưng không thực thi nó. Một tình huống như vậy xảy ra khi chương trình của bạn cần nhập liệu bằng bàn phím. Nếu đúng như vậy, bằng cách sử dụng kỹ thuật ở bước trước, khi bạn xây dựng và tải xuống, chương trình sẽ thực thi trên Raspberry Pi và do đó, bạn đang mong đợi nhập liệu bằng bàn phím từ Pi, nhưng tất nhiên, không có bàn phím nào được gắn với Pi, nên chương trình bị treo - không tốt.

Bạn phải sử dụng một kỹ thuật hơi khác để thực thi chương trình. Về cơ bản, bạn tạo một tệp lớp chính "giả" về cơ bản không làm gì cả và xác định nó là chương trình sẽ được thực thi sau khi tải xuống. Trong trường hợp này, "giả" được thực thi và sau đó bạn có thể chạy chương trình "thực" của mình trực tiếp trên Pi.

Để sử dụng kỹ thuật này, trước tiên hãy tạo một lớp chính mới:

  1. Hiển thị menu dự án như trong bước 5 và nhấp vào Mới-> Lớp chính của Java. Bạn sẽ thấy cửa sổ bật lên Lớp chính Java mới.
  2. Trong trường Tên lớp, hãy nhập tên. Tên có thể là bất cứ thứ gì bạn thích; Tôi đã sử dụng "Dummy". Trường Gói cho phép bạn xác định gói của lớp; bạn chọn gói bằng menu thả xuống ở bên phải của trường. Lớp có thể nằm trong cùng một gói với chương trình "thực" của bạn hoặc trong một gói khác; Tôi đặt lớp mới trong cùng một gói. Nhấp vào Kết thúc. Bây giờ bạn sẽ thấy cửa sổ chính của NetBeans với tệp mới ở bảng trên cùng bên phải (hình một). Tôi đã thêm một tuyên bố in đơn giản về việc chạy trên Pi, nhưng không thực sự cần thiết.

Để chạy "Dummy" sau khi tải xuống, bạn phải đặt nó trở thành "lớp chính để thực thi theo mặc định" cho dự án:

  1. Mở Thuộc tính dự án như trong bước 5. Chọn danh mục Chạy. Bấm Duyệt ở bên phải của trường Lớp Chính. Bạn sẽ thấy cửa sổ bật lên Browse Main Classes (hình hai).
  2. Chọn lớp "Dummy". Nhấp vào Chọn lớp chính. Một lần nữa bạn sẽ thấy Thuộc tính dự án.
  3. Bấm OK. Bạn sẽ trở lại cửa sổ chính.

Bây giờ khi bạn nhấp vào biểu tượng Run, NetBeans tuân thủ / xây dựng toàn bộ dự án, tải jar chứa tất cả các tệp lớp xuống Pi và thực thi lớp "Dummy" (hình 3).

Để thực thi chương trình thực của bạn trên Pi, bây giờ bạn phải sử dụng lệnh java với tùy chọn 'classpath', tùy chọn này yêu cầu bạn xác định rõ ràng lớp chính để thực thi. Từ một ứng dụng ssh, hãy chuyển đến thư mục dist cho dự án của bạn. Lệnh thích hợp có dạng:

java -cp project_name.jar package_name.class_name

Project_name rõ ràng là đề cập đến dự án; điều đó chỉ thay đổi khi xử lý một dự án mới. Tất nhiên, package_name đề cập đến gói, và class_name đề cập đến lớp chính để thực thi. Như đã nói trước đó, một dự án có thể chứa nhiều gói. Tương tự, một gói có thể chứa nhiều lớp và tất cả đều có thể là lớp chính hoặc chương trình, có thể được thực thi từ dòng lệnh. Do đó, kỹ thuật 'classpath' khá hữu ích để phát triển các chương trình phức tạp với nhiều lớp, một số trong đó là các lớp chính chỉ để hỗ trợ kiểm thử đơn vị.

Lệnh sau thực hiện chương trình ví dụ của tôi:

java -cp MyRemoteProg.jar myremoteprog. MyRemoteProg

Bước 10: Tận dụng Quản lý Thư viện NetBeans

Một trong những khía cạnh khó khăn nhất nhưng quan trọng nhất của các chương trình phức tạp là xử lý các thư viện, tức là mã người khác đã viết. NetBeans đã thực hiện một công việc đáng ngưỡng mộ khi loại bỏ hầu hết các khó khăn trong việc quản lý thư viện.

Tôi sẽ sử dụng Pi4J làm ví dụ, cung cấp cho các chương trình Java quyền truy cập vào GPIO Raspberry Pi, bus I2C và I / O phần cứng khác. Pi4J là một ví dụ về hỗ trợ thực hiện nhiều điều thú vị trên Pi với Java.

Trước tiên, bạn phải tải thư viện xuống máy trạm của mình. Xem trang tải xuống Pi4J. Vì bạn không cài đặt Pi4J trên Pi, hãy tải tệp zip xuống máy trạm của bạn. Bạn có thể có hoặc không phải giải nén rõ ràng khi zip được tải xuống.

Bây giờ bạn phải tạo một "thư viện toàn cầu" trong NetBeans:

  1. Trong menu chính của NetBeans, nhấp vào Công cụ -> Thư viện. Bạn sẽ thấy cửa sổ bật lên Trình quản lý Thư viện Kiến (hình một).
  2. Nhấp vào Thư viện mới ở dưới cùng bên trái. Bạn sẽ thấy cửa sổ bật lên Thư viện mới (hình hai).
  3. Nhập tên có ý nghĩa mà bạn muốn sử dụng và nhấp vào OK. Một lần nữa bạn sẽ thấy cửa sổ bật lên Trình quản lý Thư viện Ant. Bây giờ nó hiển thị thư viện mới mà bạn đã tạo (hình 3).
  4. Nhấp vào Thêm JAR / Thư mục ở bên phải. Bạn sẽ thấy cửa sổ bật lên Browse JAR / Folder (hình 4).
  5. Điều hướng đến và sau đó chọn pi4j-core.jar. Sau đó nhấp vào Thêm JAR / Thư mục. Bạn sẽ trở lại cửa sổ bật lên Trình quản lý Thư viện Ant.
  6. Trong cửa sổ bật lên Trình quản lý Thư viện Kiến, hãy nhấp vào OK. Bạn sẽ trở lại cửa sổ chính của NetBeans.

Bạn đã thêm thư viện để nó có thể được sử dụng trong bất kỳ dự án nào. Bây giờ bạn phải thêm thư viện vào dự án của mình:

  1. Mở cửa sổ bật lên Thuộc tính dự án (xem bước 5) và chọn danh mục Thư viện (hình năm).
  2. Nhấp vào Thêm thư viện ở phía bên phải của cửa sổ bật lên. Bạn sẽ thấy cửa sổ bật lên Thêm Thư viện (hình sáu).
  3. Điều hướng đến thư viện và chọn nó. Sau đó nhấp vào Thêm thư viện. Bạn sẽ lại thấy cửa sổ bật lên Thuộc tính dự án. Thư viện hiện xuất hiện trong danh sách Thư viện thời gian biên dịch trong cửa sổ bật lên.
  4. Trong cửa sổ bật lên Thuộc tính dự án, bấm OK. Bạn sẽ trở lại cửa sổ chính.

Bạn đã thêm thư viện vào dự án của mình để chương trình của bạn có thể sử dụng nó. Bạn có thể thực hiện cùng một chuỗi hành động cho bất kỳ thư viện nào bạn cần cho một chương trình.

Có ba lần bạn cần thư viện - biên dịch, xây dựng và thực thi. May mắn thay, với NetBeans, việc thêm thư viện như hình trên sẽ xử lý tất cả. Để xác nhận điều này, tôi đã tạo một lớp chính khác có mức tối thiểu tuyệt đối cần thiết để sử dụng khả năng I2C trong Pi4J (hình 7). Thực tế là không có lỗi hiển thị có nghĩa là lớp TestPi4J biên dịch. Nhấp vào Run xây dựng và tải xuống thành công; NetBeans tải xuống thư viện cùng với tệp jar, vì vậy chương trình sẽ thực thi. Để xác minh sau, bạn có thể sử dụng kỹ thuật ở bước 9 và trong ứng dụng khách ssh, hãy nhập lệnh sau (từ thư mục dist):

java -cp MyRemoteProg.jar myremoteprog. TestPi4J

Đó là hướng dẫn để hiểu cách NetBeans xử lý các thư viện. Khi ở trong thư mục dist cho dự án của bạn, hãy liệt kê nội dung của thư mục (sử dụng lệnh ls) và bạn sẽ thấy một thư mục con lib. Liệt kê nội dung của thư mục đó và bạn sẽ thấy tệp jar được xác định trong thư viện chung, trong ví dụ của tôi là pi4j-core.jar. Tất cả các thư viện mà bạn thêm vào dự án sẽ xuất hiện trong thư mục lib và do đó có sẵn cho tất cả các chương trình trong tệp jar của dự án.

Bước 11: Vui chơi

Tôi đã mô tả một cách tiếp cận để đạt được sự phát triển Java rất hiệu quả cho Raspberry Pi. Raspberry Pi là một công nghệ cực kỳ phổ biến cho nhiều dự án. Java là một ngôn ngữ lập trình cấp chuyên nghiệp cung cấp các lợi thế về hiệu suất so với Python và cung cấp các lợi thế về an toàn so với C / C ++. NetBeans là một IDE cấp chuyên nghiệp giúp tăng năng suất của lập trình viên lên rất nhiều.

Tôi nghĩ rằng sự kết hợp là khá hấp dẫn. Bây giờ, hãy tận hưởng niềm vui bằng cách sử dụng kết hợp cho các dự án của bạn.