Hầu hết các điểm được bao phủ bởi ý kiến trên, nhưng tôi sẽ mở rộng vào chúng một chút ở đây:
Nếu mã của bạn đang chạy trên máy tính của người dùng, người dùng có thể dịch ngược mã của bạn. Nó không quan trọng nó là ngôn ngữ gì. Java, C, khoảng trắng, brainfuck, nó không quan trọng. Nếu mã chạy trên một máy tính, một con người có thể đọc nó. Ngay cả khi bạn tạo ngôn ngữ và trình biên dịch homebrew của riêng mình, mã đã biên dịch vẫn sẽ là một chuỗi các lệnh máy tiêu chuẩn, các trình giải mã sẽ chuyển thành mã có thể đọc được trong C hoặc bất kỳ ngôn ngữ nào bạn thích.
Không có ngoại lệ. Quên nó đi.
Nhưng có nhiều cách để có được những gì bạn muốn: bảo vệ một số logic kinh doanh bí mật. Một cách dễ dàng để làm điều này là đặt logic nghiệp vụ trên máy của riêng bạn và phơi bày nó với một dịch vụ web. Người dùng vẫn có thể nhìn thấy các yêu cầu của khách hàng và phản hồi dịch vụ nhưng nếu không logic của bạn là một hộp đen.
Bạn cũng có thể tạo máy của riêng mình, khóa máy và phân phối chúng cho người dùng. Hãy nhận biết rằng mặc dù điều này là có thể, về mặt kỹ thuật khá khó để làm đúng (nghĩ về tất cả các máy chơi game và điện thoại thông minh bị hack), và sẽ làm tăng đáng kể chi phí dịch vụ của bạn.
Không có. Nếu JRE có thể mở nó, bất cứ ai cũng có thể. –
đặt mã bảo mật và logic trên máy chủ của bạn –
* "Điều là tôi không muốn bất kỳ ai truy cập mã, đó là lý do tại sao tôi không thích Java." * Có thể bằng bất kỳ ngôn ngữ nào. Dễ dàng hơn và hợp pháp hơn, là cung cấp cho nhân viên kiểm thử nhiệm vụ mô tả đầu vào và đầu ra và nhóm lập trình công việc để tạo ra một phiên bản tốt hơn. Họ sẽ không cần hoặc muốn xem mã cho bất kỳ phần nào trong đó, trừ khi nó sử dụng một thuật toán thực sự không trực quan. Nếu đúng như vậy, hãy chuyển phần đó sang phía máy chủ, như được đề cập bởi @JigarJoshi. –