2011-10-20 33 views
5

Có, tôi hơi ngạc nhiên khi một người phỏng vấn đề cập rằng họ sử dụng giao diện Java-swing cho ứng dụng C/C++. Tôi tò mò và hỏi anh ta cách họ thực sự tích hợp chúng với nhau, câu trả lời của anh ấy là "thông qua nhắn tin". Hấp dẫn! Vâng, tôi mới đến kiểu tiếp cận này và tò mò muốn biết các công ty có thực sự sử dụng loại thiết kế này không. Nếu có, thì có một lợi thế lớn cho thiết kế này? Đó là một chút khó khăn cho tôi để hiểu làm thế nào thiết kế này sẽ làm việc tốt, nếu bạn có bất kỳ tài liệu tham khảo xin vui lòng chia sẻ.GUI Java cho ứng dụng C++ - Đây có phải là thiết kế tốt không?

FYI, sản phẩm là ứng dụng dựa trên dữ liệu sao lưu (trên nền tảng Linux/Unix có thể). Cảm ơn bạn.

CV

+1

Tôi đoán rằng lý do duy nhất họ thiết kế theo cách này là bởi vì họ có "anh chàng C/C++" và "anh chàng Java" để cùng nhau làm việc và không muốn phát triển bên ngoài vùng thoải mái của họ. Nghe như thiết kế tồi tệ với tôi. – hspain

+0

Không chắc chắn nếu đây là một câu hỏi StackOverflow hoặc [programmers.stackexchange] (http://programmers.stackexchange.com). Tôi nghĩ rằng điều này có thể là do chuyên môn của các lập trình viên của họ - chúng có thể thoải mái hơn với Java GUI, nhưng tốt với các "ruột" C/C++. Dù sao, tôi bỏ phiếu rằng câu hỏi này được chuyển đến [programmers.stackexchange] (http://programmers.stackexchange.com) như một trang web thích hợp hơn loại câu hỏi này. –

+2

Hoặc ai đó với mái tóc nhọn nghe rằng Java là rất tốt cho UI/Portability (có thể là vào cuối những năm 90!) Và buộc một số Java được sử dụng. Hoặc nó có thể là các hệ thống đầu cuối phụ thuộc vào rất nhiều mã nguồn gốc, do đó, nó đã được dễ dàng hơn để chỉ viết toàn bộ điều như là một ứng dụng độc lập C + +. – ObscureRobot

Trả lời

3

Thật khó để nói nếu đây là một thiết kế tốt mà không cần biết thêm thông tin về các yêu cầu của ứng dụng.

Một điều cần lưu ý là đôi khi người phỏng vấn sẽ đề xuất thiết kế lạ để xem ứng viên phản ứng như thế nào. Tôi thường sẽ làm điều này khi tôi thuê một vai trò không phải là năng lực cá nhân của tôi, nhưng tôi đã có kinh nghiệm (thường là những thứ đang diễn ra). Mục tiêu của tôi là để xem liệu ứng cử viên có tốt hơn trong việc giải quyết vấn đề hơn tôi không! Các ứng cử viên xấu sẽ không chấp nhận giải pháp kém của tôi. Ứng cử viên tốt hơn sẽ ngay lập tức đề xuất một giải pháp tốt hơn. Các ứng cử viên giỏi nhất sẽ so sánh và đối chiếu giải pháp yếu của tôi với giải pháp tốt hơn của họ và khám phá khi nào mỗi tùy chọn có ý nghĩa.

Tôi đoán rằng giao diện người dùng Java đã được chọn vì các lý do về tính di động. Tôi sẽ tranh luận về một giao diện dựa trên trình duyệt để hoàn thành các mục tiêu tương tự, nhưng có lẽ người UI/UX của họ thực sự yêu Java.

7

Tôi thấy không có gì sai với nó. Nó là rất phổ biến để tích hợp các thành phần khác nhau thông qua tin nhắn. Tôi nghĩ tốt hơn hết là nên có một môi trường đồng nhất (ví dụ, tất cả các ứng dụng được viết bằng Java chứ không phải Java và C++), tuy nhiên nó thường là trường hợp bạn phải tích hợp với các thành phần cũ hoặc bên thứ ba được viết bằng các ngôn ngữ khác. lý do chi phí hoặc vì không có lựa chọn nào khác.

Nhắn tin là một cách phổ biến để thực hiện việc này. Tôi xem xét HTTP dưới cái ô "nhắn tin", và gần như mọi ngôn ngữ đều có một thư viện HTTP - làm cho nó trở thành một lựa chọn tốt như một "ngôn ngữ" thông thường. Khi tích hợp một hệ thống rất không đồng nhất, có các công cụ/khung công cụ chuyên dụng không chỉ để tích hợp các thành phần, mà còn để tích hợp các hệ thống nhắn tin (ví dụ: ESBs).

+3

Tôi đồng ý. Tại sao lại viết lại một hệ thống làm việc nếu bạn có thể chỉ cần thêm một GUI mà nói chuyện với nó. Điều này xảy ra khá thường xuyên trong ngành dịch vụ tài chính, nơi mà một hệ thống back-end kế thừa được đưa ra một GUI mới, rất thường xuyên trong Java, giao tiếp thông qua các thông báo tới backend. Trong thực tế, một tỷ lệ rất lớn của các giải pháp ngân hàng internet và thậm chí cả công việc của ATM chính xác theo cách này. – Ewald

1

Có thể có những hạn chế về lý do tại sao họ phải gọi hàm C++ ở vị trí đầu tiên và sau đó trên đầu trang mà họ có thể đã có yêu cầu khách hàng phân tán. Làm thế nào bạn sẽ phát triển một giải pháp, vì vậy bạn xây dựng một hệ thống nhắn tin và giao diện với C++ ở phía máy chủ. Đó là một giải pháp làm việc vào cuối ngày. Tôi sẽ không mong đợi rằng ui phải được xây dựng trong C++ vì phía máy chủ được viết bằng C++, đôi khi bạn cần phải tập hợp các công nghệ khác nhau lại với nhau để đạt được giải pháp của bạn.

1

Đó là một cách tiếp cận khả thi/OK, tôi thấy nó được sử dụng ở một công ty rất lớn (Fortune 20 nếu có điều đó) khi tôi làm việc ở đó với tư cách là nhà thầu 2005-2006.

Khi tôi hỏi tại sao, tôi đã nói:

  1. Cần Linux GUI, java/SWING là một lựa chọn đáng kính. Tôi cũng nghĩ rằng họ có một số nhà phát triển Java cần làm việc.
  2. Chúng có cơ sở mã quan trọng, hiệu suất cao trong C++/C.
  3. Họ đã sử dụng tin nhắn rộng rãi và có thư viện cho điều đó.
  4. Giao diện nhắn tin, trong khi tốn kém hơn để phát triển, cho phép nhóm viết các chương trình thử nghiệm (như thay thế GUI sản xuất bằng tập lệnh python).

Điều đó tất cả đã nói, Qt và GTK/Gtkmm là khung công tác GUI rất tốt, tại sao không sử dụng?

Các vấn đề liên quan