Python và Java có tương thích không?

Báo cáo vị trí cho Hội thảo OMG-DARPA-MCC về Kiến trúc phần mềm tổng hợp ở Monterey, California, ngày 6-8 tháng 1 năm 1998

Giới thiệu

Python là ngôn ngữ kịch bản nâng cao đang được sử dụng thành công để kết dính các thành phần phần mềm lớn lại với nhau. Nó mở rộng trên nhiều nền tảng, sản phẩm phần mềm trung gian và miền ứng dụng. Python là ngôn ngữ hướng đối tượng với cấu trúc dữ liệu cấp cao, gõ động và liên kết động. Python đã xuất hiện từ năm 1991 và có một cộng đồng người dùng rất tích cực. Để biết thêm thông tin, hãy xem trang web Python http. //www. con trăn. tổ chức

Giống như Tcl, Python có thể dễ dàng mở rộng bằng mã C/C++/Java và dễ dàng nhúng vào các ứng dụng. Python thậm chí còn sử dụng Tk, bộ công cụ GUI Tcl, cho bộ công cụ GUI di động tiêu chuẩn thực tế. Tuy nhiên, không giống như Tcl, Python hỗ trợ lập trình hướng đối tượng. Lập trình viên Python có thể tạo lớp, sử dụng đa kế thừa, định nghĩa phương thức, nạp chồng toán tử, v.v.

Điểm mạnh của Python

Về mặt cú pháp, mã Python trông giống như mã giả thực thi được. Phát triển chương trình bằng Python nhanh hơn 5-10 lần so với sử dụng C/C++ và nhanh hơn 3-5 lần so với sử dụng Java. Trong nhiều trường hợp, nguyên mẫu của một ứng dụng có thể được viết bằng Python mà không cần viết bất kỳ mã C/C++/Java nào. Thông thường, nguyên mẫu có đầy đủ chức năng và hoạt động đủ tốt để được phân phối dưới dạng sản phẩm cuối cùng, giúp tiết kiệm đáng kể thời gian phát triển. Những lần khác, nguyên mẫu có thể được dịch một phần hoặc toàn bộ sang C++ hoặc Java -- Bản chất hướng đối tượng của Python làm cho quá trình dịch trở nên đơn giản

Cách tiếp cận tốt nhất thường là chỉ viết các phần quan trọng về hiệu suất của ứng dụng bằng C++ hoặc Java và sử dụng Python cho tất cả các điều khiển và tùy chỉnh cấp cao hơn. Có một số giai thoại về các ứng dụng khởi đầu là mã C++ thuần túy mà Python đã được thêm vào làm ngôn ngữ mở rộng, trong đó trong mỗi phiên bản mới, tỷ lệ phần trăm của ứng dụng được viết bằng Python tăng lên, đồng thời tăng hiệu suất, chức năng và độ tin cậy tổng thể của . (E. g. nghiên cứu điển hình. Python trong môi trường thương mại, của Greg Stein, Microsoft, trong Kỷ yếu của Hội nghị Python quốc tế lần thứ 6 và dự án Alice VR tại UvA và CMU. )

Python có sự hiện diện mạnh mẽ trên web. Nó phù hợp cho lập trình CGI (trên tất cả các nền tảng. Unix, Windows và Mac); . Python có một thư viện giao diện với các giao thức web và Internet chính, đồng thời có các bộ công cụ tạo và phân tích cú pháp HTML. Python là ngôn ngữ triển khai chính của Infoseek khi chúng còn nhỏ hơn. Ít nhất một công ty (Digital Creations) đang bán một bộ công cụ phía máy chủ bằng Python. Và cuối cùng, Python đã được sử dụng để triển khai trình duyệt web (Grail)

Python cũng được thể hiện tốt trong thế giới hệ thống phân tán. Đây là một trong những ngôn ngữ chính được hỗ trợ bởi ILU của Xerox PARC (Thống nhất liên ngôn ngữ; một hệ thống đối tượng phân tán tương thích với CORBA) và nhiều ứng dụng phân tán đã được xây dựng bằng Python bằng ILU. Python cũng được sử dụng bởi dự án Hector tại Đại học Queensland, Úc

Cuối cùng, Python được tích hợp tốt với các nền tảng Windows. Các chương trình Python có thể tương tác với các dịch vụ COM và DCOM và thậm chí có thể triển khai các dịch vụ COM và DCOM mới (điều này không thể thực hiện được khi sử dụng Visual Basic. ). Python cũng có thể được sử dụng như một công cụ viết kịch bản trong kiến ​​trúc Active Scripting của Microsoft

Sử dụng Python làm ngôn ngữ tích hợp

Liên quan đến chủ đề của hội thảo này, Python được sử dụng ở nhiều nơi như một ngôn ngữ tích hợp, được sử dụng để kết dính các thành phần hiện có ("lái") lại với nhau. Chiến lược ở đây là tạo các mô-đun mở rộng Python (được viết bằng C/C++) để cung cấp chức năng của các thành phần lớn được viết bằng C/C++ cho lập trình viên Python. Các mô-đun mở rộng ("keo") là bắt buộc vì Python không thể gọi trực tiếp các hàm C/C++;

Việc tạo các tiện ích mở rộng keo được đơn giản hóa nhờ sự tồn tại của SWIG, đọc các tệp tiêu đề chứa các nguyên mẫu chức năng và phương thức và tự động tạo mã kiểm tra lỗi và chuyển đổi loại cần thiết. Trong các trường hợp mã cơ bản (thường là mã C) không sử dụng mô hình hướng đối tượng, phần mở rộng keo có thể được gói trong một mô-đun Python xác định phân cấp lớp phù hợp, đồng thời ủy thác các hoạt động quan trọng về hiệu suất cho mã C

Sử dụng Python, các ứng dụng tốt hơn có thể được phát triển vì các loại lập trình viên khác nhau có thể làm việc cùng nhau trong một dự án. Ví dụ: khi xây dựng một ứng dụng khoa học, các lập trình viên C/C++ có thể triển khai các thuật toán số hiệu quả, trong khi các nhà khoa học trong cùng một dự án có thể viết các chương trình Python để kiểm tra và sử dụng các thuật toán đó. Nhà khoa học không cần phải học ngôn ngữ lập trình cấp thấp và lập trình viên C/C++ không cần hiểu khoa học liên quan

Nếu không có Python, một lượng lớn mã C/C++ thường phải được viết chỉ để cung cấp cơ chế đầu vào đủ linh hoạt để các nhà khoa học có thể cung cấp dữ liệu của chương trình, trong tất cả các biến thể được yêu cầu vì lý do thiết lập thử nghiệm (ví dụ). Với Python, Python có thể được sử dụng để viết cơ chế nhập liệu linh hoạt hơn nhiều trong thời gian ngắn hơn nhiều hoặc bản thân Python có thể là cơ chế nhập liệu linh hoạt cuối cùng. Như một ví dụ điển hình, Phòng thí nghiệm quốc gia Lawrence Livermore đang sử dụng Python để cuối cùng thay thế ngôn ngữ kịch bản (BASIS) được phát triển nội bộ cho cùng một mục đích;

Vì Python có sẵn các giao diện cho rất nhiều thành phần khác nhau trong các miền ứng dụng rất khác nhau nên Python rất lý tưởng cho các tác vụ tích hợp kỳ quặc. Nó có thể liên kết cơ sở dữ liệu thương mại với mã xử lý số;

Phần kết luận

Python có thể hoàn thành vai trò tích hợp quan trọng trong thiết kế các ứng dụng lớn với tuổi thọ cao. Nó cho phép phản ứng nhanh với những thay đổi trong yêu cầu của người dùng yêu cầu điều chỉnh logic ứng dụng cấp cao hơn mà không thay đổi các thành phần cơ bản bên dưới. Nó cũng cho phép ứng dụng thích ứng nhanh với những thay đổi trong các thành phần cơ bản


phần kết. Tích hợp Python và Java

Một triển khai Python mới được viết bằng 100% Pure Java, được đặt tên là JPython, hiện đang được phát triển; . JPython cung cấp kịch bản liền mạch cho Java. Nó là một triển khai đầy đủ của ngôn ngữ Python và thư viện chuẩn, thêm quyền truy cập trực tiếp vào vũ trụ của các lớp Java. Mã Java cũng có thể sử dụng các lớp Python - ví dụ, điều này rất quan trọng đối với các cuộc gọi lại

Lực đẩy chính của JPython là nó làm cho Java những gì Python đã làm cho C và C++. để cung cấp cho các lập trình viên nhiều lựa chọn hơn trong việc đánh đổi giữa thời gian phát triển và thời gian thực hiện, bằng cách cung cấp một giải pháp thay thế năng động hơn, biểu cảm hơn. Khả năng tích hợp của JPython với Java vượt trội so với khả năng tích hợp của Python với C/C++. do Reflection API của Java, JPython có thể sử dụng các lớp Java tùy ý mà không cần sự trợ giúp của trình tạo trình bao bọc, chẳng hạn như SWIG. (Mã C/C++ trước tiên phải được cung cấp cho Java thông qua giao diện mã gốc Java; một khi có thể gọi được từ Java thì có thể gọi được từ JPython. )

Làm cách nào để kết hợp Java và Python?

Cách ưa thích của tôi để tích hợp cả hai sẽ sử dụng RPC. .
Tạo giao diện SWIG cho tất cả các lệnh gọi phương thức từ Java đến C++
Tạo mã C/C++ sẽ nhận cuộc gọi của bạn và gọi nội bộ trình thông dịch python với thông số phù hợp
Chuyển đổi phản hồi bạn nhận được từ python và gửi nó qua swig trở lại mã Java của bạn

Tôi nên học Java hay Python trước?

Python thân thiện với người dùng và dễ học hơn (Những người mới bắt đầu như tôi) hơn Java. Nếu bạn mới bắt đầu sự nghiệp lập trình của mình, hãy luôn bắt đầu bằng việc học Python