Cân nhắc xem phiên bản Java nào sẽ chạy trong Sản xuất


14

Một số người chạy theo xu hướng mới của công nghệ - cập nhật ngày mà một cái gì đó được cập nhật. Trong sản xuất, điều này là không phù hợp.

Nghiên cứu về việc liệu phiên bản (Java 7) hiện tại đã sẵn sàng để sản xuất có tạo ra một lượng đáng kể vật liệu cũ có thể không còn chính xác nữa hay không (tại thời điểm viết bài này, Java 7 đã ra mắt được một năm rưỡi .

Tôi cần cân nhắc những gì để xác định xem có phù hợp để nâng cấp môi trường sản xuất lên phiên bản Java mới hơn không?


Ngay cả nếu có, bất kỳ thư viện / trình cắm thêm của bên thứ ba nào được sử dụng (nếu có) trong ứng dụng đã nói cũng sẽ ổn với Java 7 (kinh doanh rủi ro).
arin

2
Đúng. Vấn đề duy nhất tôi gặp phải là tôi không thể cài đặt Java 7 trên Red Hat Enterprise Linux 4, nhưng sau đó, hệ điều hành đó đã lỗi thời. Tôi đã sử dụng nó trong sản xuất ở mọi nơi khác khoảng 6 tháng nay mà không gặp trở ngại nào.
GlenPeterson

@arin: không phải với Java, không hẳn vậy. Nó có xu hướng tương thích xuống một cách lố bịch.
Michael Borgwardt

Về lý thuyết @MichaelBorgwardt Tôi đồng ý với bạn, nhưng trong môi trường thử nghiệm, tôi đã thấy các thư viện của bên thứ ba gây ra hành vi / sự cố thất thường trong mã thử nghiệm của chúng tôi ngay cả sau khi cập nhật lên bản nâng cấp phiên bản nhỏ.
arin

@arin: chắc chắn, nó có thể xảy ra. Nhưng theo kinh nghiệm của tôi, thật hiếm khi có ít lý do để sợ cập nhật Java hơn là thay đổi hầu hết mọi thứ khác (đặc biệt là mã riêng của một người).
Michael Borgwardt

Câu trả lời:


11

Câu hỏi đầu tiên cần đặt ra là "Phiên bản Java có được hỗ trợ trên máy không?" Mặc dù cập nhật JRE là một điều, có thể hệ điều hành cơ bản không được hỗ trợ chạy phiên bản Java mới (các chứng nhận được hỗ trợ và hợp đồng hỗ trợ và tương tự như nhiều môi trường doanh nghiệp muốn có).

Nhiều môi trường sản xuất java thực sự đang chạy trên một máy chủ ứng dụng . Đây sẽ là sự xem xét tiếp theo. Wikipedia so sánh Máy chủ ứng dụng Java EE cho thấy phiên bản Java EE nào được hỗ trợ. Điều này có thể được thấy rõ hơn trong tổng quan tương thích JavaEE của Oracle . Cấu hình được thử nghiệm cho JBoss Enterprise Application Platform 6 chống lại bản cập nhật Java SE 6.0 6u30. Bản cập nhật Java SE 6.0 6u30 cũng là cấu hình được thử nghiệm cho JBoss Application Server 7.1.0 Final . Chúng có thể hoạt động trong Java 7, nhưng chúng không được kiểm tra cấu hình.

Mở rộng trên máy chủ ứng dụng, có các công cụ phân tích mã trực tiếp được sử dụng để gỡ lỗi sau thực tế. Trình gỡ lỗi đa dạng (xem thêm) và Dynatrace là hai ví dụ về điều này. Các ứng dụng này hoạt động bằng cách ghi lại (sửa đổi) mã byte trực tiếp của java đang chạy để báo cáo lại. Vì các ứng dụng này hoạt động bằng cách sửa đổi mã byte, nếu mã byte thay đổi theo cách chúng không có khả năng hoạt động (như trong JRE mới), chúng sẽ không hoạt động.

Tiếp theo xuống dòng là các khung . Một ví dụ về điều này là JAXB đi kèm với java và Spring sử dụng nó. Thay đổi sang JAXB đã cập nhật Java 7, tạo ra mã không tương thích với một số khung công tác (yêu cầu chúng phải được cập nhật và các phụ thuộc của chúng sẽ cần được cập nhật ...).

Công cụ xây dựng là tiếp theo trong danh sách. Người ta sẽ cần đảm bảo rằng môi trường xây dựng đang sử dụng phiên bản Java phù hợp. Viết mã cho Java 7 nhưng không cập nhật phiên bản mà Maven hoặc Ant sử dụng sẽ gây ra sự cố. Đôi khi, các công cụ xây dựng tự gắn chặt với một phiên bản với các plugin cụ thể.

Công cụ kiểm tra . Những thứ như PMD, findbugs và checkstyle có thể không nhận ra các cấu trúc mới trong một phiên bản Java mới - những thứ này có thể rất khó hiểu với các câu lệnh chuyển đổi chuỗi hoặc các câu lệnh ghép. Các công cụ đi vào thiết bị như bảo hiểm mã có thể không hoạt động trong JVM mới. Trong ngữ cảnh của Java 7, Cobertura và Emma chưa được cập nhật lên JRE mới (một lần nữa, các ứng dụng này sửa đổi mã byte để xem mã nào được chạy và mã nào không) (xem thư viện bảo hiểm mã nguồn mở cho jdk7 ). Điều này có thể yêu cầu thay đổi tập lệnh xây dựng để chuyển từ tập lệnh này sang tập lệnh khác.

Sau đó là IDE . Người ta sẽ cần cập nhật IDE lên một phiên bản nhận thức được các cấu trúc mới trong ngôn ngữ. Thông báo hỗ trợ cho Java 7 của Eclipse cho thấy những vấn đề này.

Cuối cùng và chắc chắn không kém phần quan trọng là nhà phát triển . Nhà phát triển phải viết mã mới và nhận thức được cách cấu trúc lại mã. Đi từ Java 1.4 đến 1.5, các mẫu và chú thích đã được giới thiệu và phải mất thời gian để các nhà phát triển đi vào suy nghĩ về các cấu trúc mới có sẵn. Tương tự, các bộ sưu tập làm lại từ năm 1.2 và khiến các nhà phát triển không sử dụng HashTable và Vector. Cập nhật phiên bản nên đi kèm với một số lượng đào tạo trong cấu trúc ngôn ngữ mới.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.