Được rồi, có rất nhiều thông tin sai trong chủ đề này.
Tôi biết kinh doanh trò chơi cực kỳ tốt, đã ở trong đó 25 năm. Tôi cũng biết Java trong các trò chơi cực kỳ tốt là nhà truyền giáo kỹ thuật Java của Sun và giảng viên chuyên gia lập trình hiệu suất Java.
Về tốc độ tính toán, Java vượt qua C ++ trong nhiều tiêu chuẩn tính toán khoa học hiện nay. Bạn có thể viết mã bệnh lý bằng một trong hai ngôn ngữ hoạt động kém nếu bạn muốn, nhưng trên hết, chúng ngang bằng nhau và đã có từ lâu.
Về mặt sử dụng bộ nhớ, Java có một số chi phí vượt trội. HelloWorld là một chương trình 4K trong java. Nhưng chi phí đó khá vô nghĩa trong các hệ thống nhiều GB ngày nay. Cuối cùng, Java có nhiều thời gian khởi động hơn. Tôi không khuyến nghị sử dụng Java cho các tiện ích thời gian ngắn như các lệnh dòng lệnh Unix. Trong những trường hợp đó, startup sẽ chi phối hiệu suất của bạn. Tuy nhiên, trong một trò chơi, nó khá khó hiểu.
Mã trò chơi Java được viết đúng cách không bị tạm dừng GC. Giống như mã C / C ++, nó yêu cầu một số quản lý bộ nhớ hoạt động nhưng không đến mức C / C ++. Miễn là bạn giữ mức sử dụng bộ nhớ của mình cho các đối tượng tồn tại lâu dài (tồn tại trong toàn bộ cấp độ hoặc trò chơi) và các đối tượng tồn tại rất ngắn (vectơ và như vậy, được truyền xung quanh và nhanh chóng bị phá hủy sau khi tính toán) gc không phải là vấn đề có thể nhìn thấy.
Về mặt truy cập bộ nhớ trực tiếp, Java đã có điều đó trong một thời gian dài; kể từ Java 1.4 dưới dạng Bộ đệm Byte trực tiếp gốc. Việc xử lý bit trong Java có thể hơi khó chịu do thiếu các kiểu số nguyên không dấu nhưng các vòng công việc đều được biết đến và không quá tệ.
Mặc dù Java thực sự của nó chưa bao giờ có ràng buộc Direct3D, nhưng đó là vì các công nghệ Java cố gắng cho tính di động. Nó có các ràng buộc TWO OpenGL (JOGL và LWJGL) và liên kết OpenAL (JOAL) và liên kết đầu vào di động (JInput) liên kết dưới mui xe với DirectInput trên Windows, HID Manager trên OSX và ràng buộc Linux (tôi quên điều đó).
Đúng là không có công cụ trò chơi hoàn chỉnh nào có tính năng Java theo cách nói, Unity, đã giới thiệu C # và đó là một điểm yếu trong không gian độc lập. Mặt khác, có hai APIS cấp độ Kịch bản tốt, hoàn toàn có thể di động trên Windows, OSX và Linux. Cả hai được viết bởi Josh Slack, cái đầu tiên được gọi là động cơ JMonkey và Ardor3D thứ hai.
Áp phích trên cùng là chính xác rằng hai điều lớn nhất cản trở Java phát triển trò chơi là định kiến và tính di động. Sau này là vấn đề lớn nhất. Mặc dù bạn có thể viết một trò chơi Java và gửi nó trên Windows, OSX và Linux, nhưng không bao giờ có máy ảo console. Điều này là do sự bất lực hoàn toàn trong quản lý cấp trung của Sun. Một vài người trong số chúng tôi làm việc trên Java trong các trò chơi thực sự đã thỏa thuận với Sony không dưới 3 lần để có được một máy ảo trên Playstation và cả 3 lần quản lý cấp trung của Sun đã giết chết nó.
Trong khi Sun tán tỉnh các công nghệ của khách hàng, thực tế của vấn đề là quản lý của Sun không bao giờ có sản phẩm tiêu dùng. Đó là lý do tại sao Java với tư cách là ngôn ngữ máy khách từ Sun không bao giờ thành công dưới bất kỳ hình thức nào và tại sao Google và Dalvik (máy ảo giống như java của Android) để biến Java thành một nền tảng thành công ở bất cứ đâu.
Và đó là lý do tại sao tôi viết mã trò chơi trong C # ngày hôm nay. Bởi vì Mono đã đi nơi quản lý của Sun từ chối.