2008-09-26 30 views
13

Lời chào,Làm thế nào để viết một chương trình đa nền tảng?

Tôi muốn viết một chương trình tiện ích đa nền tảng nhỏ với GUI trong đó. Tôi nên tuân theo ngôn ngữ/GUI-thư viện nào? Có thể nào không?

Đây sẽ là một chương trình nhỏ, vì vậy tôi không muốn làm cho mọi người tải xuống JVM hoặc .NET Framework. Liệu có thể phát triển nó một cách tự nhiên?

Update 1.

Bằng cách "tự nhiên" Tôi có nghĩa là kết quả cuối cùng sẽ được mã gốc mà không cần lớp trung gian như Java Virtual Machine hoặc .NET Common Language Runtime

Cập nhật 2.

Một Giải pháp MIỄN PHÍ là thích hợp hơn;)

Trả lời

5

Bạn muốn phát triển một chương trình đa nền tảng một cách tự nhiên? Uh ... Tôi không nghĩ rằng nó sẽ làm việc, chủ yếu là vì cụm từ đó là một nghịch lý. Nếu bạn viết mã nguồn gốc, nó rất tự nhiên sẽ chỉ chạy trên nền tảng mà bạn đã lập trình nó. ;-) Đó là tất cả những gì về Khung.

Vì vậy, những gì bạn nên làm thay vì sử dụng một khung rất mỏng nếu chương trình của bạn sẽ nhỏ như vậy. Ý tưởng về Qt của itmatt là một khả năng.

3

Làm thế nào về Python sử dụng Qt hoặc Wx và sau đó sử dụng PythonToExe để thực hiện một 'chia'

tưởng sẽ phải đưa ra cho sự phát triển để đảm bảo rằng không có chức năng có nguồn gốc được sử dụng (ví dụ: đăng ký, vv) Ngoài ra những thứ như ngắt dòng trong tập tin văn bản sẽ có ký tự thoát khác nhau như vậy sẽ cần phải được xử lý

15

Nếu bạn biết C hoặc C++ cây thập tự đầu tiên nền tảng GUI khuôn khổ tôi có thể nghĩ đến là:

  • QT (C++, độc quyền nhưng miễn phí với việc cấp phép LGPL)
  • wxWidgets (C++, hoàn chỉnh nhất và ổn định mà còn rất lớn)
  • FLTK (C++)
  • FOX (C++)
  • IUP (C, đơn giản hơn và sạch hơn so với những người ở trên)

Nếu bạn biết Pascal, bạn có thể thử freepascal + Lazarus. Tôi chưa từng sử dụng nó.

+0

Câu trả lời tuyệt vời Remo.D –

+0

Qt chỉ miễn phí cho các dự án GPL. Các dự án có giấy phép phi thương mại khác - bao gồm các giấy phép nguồn mở phổ biến như BSD hoặc MIT/X11 - cần phải thanh toán. FWIW, Qt là lựa chọn của tôi nhờ vào API đầy đủ và được thiết kế tốt. – skymt

+5

Qt hiện có giấy phép LGPL (miễn phí), vì vậy nhận xét trên của skymt không còn chính xác nữa. – KeyserSoze

4

WxWindows? Ồ, nó được gọi là WxWidgets ngay bây giờ: http://www.wxwidgets.org/

+0

Không sao cả. Trên thực tế nó trông thực sự đánh bóng bây giờ, có thể phải có một chơi sometime :) – JeeBee

4

wxWidgets có liên kết với tất cả các loại ngôn ngữ - ví dụ: nếu ứng dụng của bạn đủ nhỏ.

6

Vấn đề là: Nếu bạn không muốn có GUI nhưng bạn không muốn yêu cầu người dùng tải xuống API vĩnh cửu, Khung hoặc máy ảo để chạy, hãy là TCL/TK, Java hoặc QT v.v. sau đó bạn bị lạc khá nhanh.

Lý do là: Bạn sẽ phải xây dựng lại tất cả các chức năng (GUI) các API, khung công tác và máy ảo này cung cấp cho bạn nền tảng độc lập. Và đó là rất nhiều việc phải làm ...

Mặt khác: Máy ảo Java được cài đặt trên gần như bất kỳ hệ điều hành nào từ đầu, tại sao không cho máy này một ảnh?

+5

Bạn có thể liên kết tĩnh Tk, wxWidgets, Qt, SDL, vv –

1

Nếu "HAS" sử dụng Desktop Qt. Không có gì đánh bại nó ngay bây giờ.

Tuy nhiên, cá nhân tôi đã từ bỏ trên máy tính để bàn và bất kỳ dự án dựa trên giao diện người dùng nào mà tôi thường làm là Trình duyệt/Máy chủ. Bạn có thể dễ dàng viết một máy chủ tùy chỉnh nhỏ lắng nghe một số cổng để chương trình có thể chạy cục bộ mà không cần người dùng của bạn cài đặt Apache hoặc có quyền truy cập vào mạng. Tôi có một khung Lua, Python và C++ nhỏ mà tôi đã tạo cho mục đích đó (Bạn muốn thêm Javascript cho backend với V8 :)

3

Bạn nghĩ gì về hệ điều hành nào khi bạn nói nền tảng chéo?

Khi Epaga chỉ ra chính xác, nguồn gốc và nền tảng chéo loại trừ lẫn nhau. Bạn có thể viết nhiều phiên bản chạy tự nhiên trên nhiều nền tảng hoặc bạn cần sử dụng một số khung công tác đa nền tảng.

Trong trường hợp của phương pháp tiếp cận khung nền tảng, sẽ luôn có yêu cầu cài đặt bổ sung. Ví dụ, nhiều người ở đây đề xuất sử dụng Python và một trong các khung công tác của nó. Điều này sẽ đòi hỏi phải hướng dẫn mọi người cài đặt python - và có khả năng là khung công tác - trước tiên.

Nếu bạn đang nhắm vào Windows và OS X (và sẵn sàng thử nghiệm với mã phát hành alpha cho Linux nếu cần hỗ trợ cho hệ điều hành đó), tôi khuyên bạn nên xem xét sử dụng Adobe AIR cho chữ thập ứng dụng GUI nền tảng.

1

Nếu bạn định xem Qt và WxWidgets, đừng quên xem GTK+!

2

Flash? Nó được cài đặt khá nhiều ở mọi nơi.

3

Tôi đồng ý với Georgi, Java là cách để thực hiện. Với một chút công việc, bạn có thể làm cho ứng dụng máy tính của bạn hoạt động như một applet Java quá (để người dùng không cần phải chủ động tải xuống bất cứ thứ gì). Xem http://www.geogebra.org làm ví dụ về ứng dụng chạy trơn tru dưới dạng ứng dụng Java đa nền tảng VÀ có một cổng đơn giản cho một ứng dụng web.

Hai ưu điểm khác để sử dụng Java là:

  1. Họ có thư viện rộng lớn cho việc xây dựng giao diện người dùng, bao gồm cả các nhà xây dựng thành phần UI.
  2. Khung thời gian chạy Java thường được cập nhật tự động cho người dùng.

Một bất lợi:

  1. Các phiên bản của Java được cài đặt trên máy tính của người dùng cuối có thể không hoàn toàn tương thích với các ứng dụng của bạn, yêu cầu bạn phải viết mã để mẫu số có khả năng thấp nhất.
3

Hãy thử RealBasic. Cú pháp giống như Visual Basic, nhắm vào Win32, OS X và Linux. Tôi không biết bất kỳ chi tiết nào về việc nhắm mục tiêu Linux, nhưng đối với bất kỳ sự phát triển đa nền tảng nào tôi đã thực hiện giữa Win32 và OS X thì đó là một giấc mơ.

http://www.realbasic.com

Chỉnh sửa: Tạo tệp thực thi gốc. Có một chi phí nhỏ - $ 100.

4

Lazarus rất tuyệt. GTK2 trên Linux, win32/64 trên Windows, WINCE trên euh, Wince. Nó thậm chí còn sử dụng Carbon trên Mac (làm việc trên COCOA). Cũng dễ dàng để bán cho ông chủ của bạn (mã là Delphi tương thích)

1

Tôi đồng ý với David Wees và Georgi,

Java là cross-platformness mệnh xuất sắc. Bạn nghĩa đen viết một lần và chạy khắp mọi nơi. Không cần biên dịch mã của bạn cho mỗi hệ điều hành mục tiêu hoặc bit, không phải lo lắng về việc liên kết với bất kỳ thứ gì, v.v.

Điều duy nhất là bạn phải cài đặt JRE, nhưng thực hiện nhanh chóng và dễ dàng ngay cả đối với người dùng cuối mới làm quen (đó là vấn đề nhấp vào "Tiếp theo>" một vài lần trong trình cài đặt).

Và với Java Web Bắt đầu triển khai trở nên dễ dàng hơn: người dùng chỉ cần nhấp vào nút khởi chạy trên trang web và ứng dụng chạy (nếu JVM thích hợp được cài đặt theo những gì được chỉ định trong bộ mô tả JNLP) hoặc người dùng được chuyển hướng đến trang tải xuống Java (nếu không tìm thấy JVM phù hợp).

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