Які фактори слід враховувати при виборі часу виконання / мови для настільних додатків Windows?


10

Усі мої користувачі мають Windows. Деякі з них використовують Linux або Mac, але якщо вони є, вони, як правило, здатні використовувати щось на зразок Mono, Wine, Parallels або dual-boot.

Моя команда розробників (включаючи мене) має великий досвід роботи з написанням додатків Swing на Java, а також з Windows Forms на C #. "Обширний" означає, що ми розробили та поставили понад три програми на обох режимах. Додатки - це програми технічного аналізу, настільки легкі для взаємодії з базами даних, але важкі для користувацького інтерфейсу та розмірів набору даних.

Ми підходимо до того, що ми дійсно хочемо прийняти рішення, на якій платформі зосередитися, оскільки це стає тягарем для підтримки обох (якщо ви працюєте в Swing протягом півроку, це занадто багато клопоту. знову звикнути до Windows Forms та навпаки), і ми хочемо, щоб усі в нашій команді мали можливість працювати над усіма нашими програмами.

  • Windows Forms, як правило, займає менше роботи для впізнавання програм Windows. Жодна кількість знімків та користувальницького контролю на Java не вирішувала це протягом багатьох років. У той же час у нас ніколи не було клієнта, який не міг би використовувати програми Swing.
  • У Java раніше була набагато багатша екосистема з точки зору бібліотек та автоматизованих інструментів збирання, але це швидко змінюється (Java не спадає, це більше, ніж .NET наздоганяє).
  • У тому рідкісному випадку, коли краща мультиплатформна платформа, Java б'є .NET руки вниз. Моно чудове, але все-таки більше роботи, ніж Java.

Якщо ми виберемо .NET, ми можемо почати орієнтуватися на WPF, а також почати використовувати F #. Якщо ми виберемо Java, ми можемо почати орієнтуватися на RCP, але також почати використовувати Scala.

Хтось повинен був прийняти подібне рішення? Якщо так, що це було і що на вас найбільше вплинуло? Яких-небудь головних проблем, яких я пропускаю?

(Зверніть увагу: у Programmers.SE вже є подібні запитання, але вони або неконструктивні, або з іншого кута.)


2
З точки зору читання, я вважаю, що заголовок питання повинен бути "Про які фактори слід думати, вибираючи час виконання / мову для настільного додатка для Windows?" , зосередившись більше на аспекті прийняття рішення вашого питання. Це набагато простіше відповісти і менш заразне, ніж "Що я повинен використовувати?" - такий тип запитання, як видається, передбачає.
Спіке

@Spoike Чудовий момент, я оновив заголовок (зробив його трохи коротше).
Декард

1
Можливо, це посилання має щось про майбутнє Windows, що дуже важливо для вас, хлопці, IMHO- zdnet.com/blog/microsoft/…
Gulshan

Примушувати користувачів Mac встановлювати Wine та запускати додаток для Windows - це те саме, що мучити їх.
праворуч

Відповіді:


7

Ми поїхали на Java (Swing) плюс деякі рідні частини через JNI. Хоча комерційний попит на мультиплатформованість сьогодні може бути незначним, ситуація може бути різною через 5 років, і життєвий цикл програми (науковий додаток для вимірювання) буде більше схожим на 10+ років (його попередник C ++, який використовується і сьогодні, має вихідні файли від 1991 року). Як ви писали, Java перемагає .NET руками в інших середовищах, і якщо нам коли-небудь потрібно відключитися від Windows, це лише питання перекомпіляції деяких рідних частин, можливо, точне налаштування вигляду графічного інтерфейсу та перевірка відповідності все працює.

Якщо ви впевнені, що ви будете лише для Windows, а ваш додаток буде функціонувати лише кілька років, тоді, можливо, буде віддано перевагу .NET - він виглядає і веде себе більше як рідний додаток, оскільки він є. Але як довгострокові інвестиції я більше довіряю Java. Гойдалки можуть виглядати трохи менше, ніж ідеально, час пуску може бути довшим, все трохи нижчим за оптимальне через багатошаровий шар абстракції, але принаймні це "просто працює".


2
Яким способом .NET додаток більше рідний додаток Windows, ніж Java?
Рей Міясака

@Rei: оскільки .NET Framework доступний лише для Windows. Звичайно, є моно, але воно завжди відстає, і на сьогодні його майбутнє, ну, непевне.
Tamás Szelei

1
@ Tamás Це зовсім інша і випадкова справа. Окрім перших кількох байтів коду в .exes, які друкують "Цю програму не можна запустити в режимі DOS". Програма все ще є повністю байт-кодом. Бібліотека Java так само рідна для Windows, як і .NET, навіть якщо реверс може бути неправдивим через відсутність реалізації.
Рей Міясака

4

Можливо, ви хочете розглянути проект IKVM, який дозволяє вам використовувати Java-код у світі .NET. Потім ви можете отримати переваги бекенда Java, тоді як, наскільки я розумію, ви можете мати тонку передню версію або в Swing, або в WinForms.

http://www.ikvm.net/

Я чув, що інші використовували це для використання бібліотеки підключень із відкритим кодом, написаної на Java від .NET, замість того, щоб використовувати громіздку версію .NET.


3

На MSDN є ресурс, який може бути корисним вам: http://msdn.microsoft.com/en-us/gg715299.aspx .

Якщо ви переходите до нижньої частини сторінки, ви знайдете купу білих шпалер, які концептуально порівнюють Java та .NET. Звичайно, оскільки він знаходиться на MSDN, він упереджений до .NET, але ресурси все ще дуже корисні.


1

Я також трохи обмірковував це питання, і я знайшов відповідь залежно від типу проекту та того, що ви можете передбачити в ньому.

Іноді створення єдиної бази даних для обслуговування всіх платформ - це добре - ви отримуєте певний рівень узгодженості інтерфейсу з меншим загальним кодом. Я думаю, що переваги та недоліки очевидні, тому я пропускаю це.

Бувають випадки, коли краще мати 2 місцеві кодові бази. Якщо, наприклад, написання вашої програми в WPF є елегантним для .NET, і написання, скажімо, какао є елегантним для Mac OS, отриманий код насправді може бути меншим, ніж використання, скажімо, Java або Mono (у яких немає WPF). У цьому випадку, ви могли б отримати кращі результати з меншим кількістю коди.

Остаточний розгляд, можливо, ваш додаток як додаток HTML5 або навіть розширення Chrome, але це може бути занадто лівим полем.


1

Ви розглядали Silverlight ? Це може бути хорошим вибором для створення також додатків для робочого столу Windows (від SL4 +) та відмінної роботи на Mac.


SL майже мертвий ..
klm_

Microsoft так не вважає. Особисто я думаю, що html5 - це перший вибір для веб-додатків, однак клієнтська SL може бути хорошою технологією.
ADIMO

Я б також пішов на HTML5, тому що він підтримується W3O. Silverlight конкурує з HTML5, і якщо він не заграє нішу, я думаю, він загине.
klm_

1

Як розробник Java на повний робочий день, я можу вам сказати, що хоча сумісність між платформами дивовижна, кожна інтеграція в кожну країну є пеклам .

У мене завжди було багато питань, а часом і невдач, на цій грунті. Можливо, вам це не потрібно, але іноді я натрапляю на нього, і це зазвичай болить.

  • Інтеграція з COM - це біль, а COM + іноді неможлива (витрачаються тижні, намагаючись змусити її працювати з Windows Tablet API).
  • Апаратне взаємодія може нашкодити. Іноді API доступний лише на одній платформі (наприклад, інтеграція камери / сканера).
  • Взаємодія з локальними додатками теж може зашкодити. Я згадав про той біль у СОМ? Ну, ще один спосіб (який ми фактично використовували) полягав у створенні та виконанні сценаріїв VBS, які запускають додаток для Windows, наприклад MapPoint або якийсь власний додаток для картографування, і подають його даними.
  • Інтеграція встановлення та робочого столу (ярлики, видалення, меню запуску) теж може зашкодити. Веб-старт дуже ненадійний. Альтернативи або дорого коштують, або відсутні деякі функції (наприклад, розповсюдження оновлення).

Не зрозумій мене неправильно. Я розробник Java, і не маю намір горіти. Я кажу лише, що якщо ви підозрюєте, що вам знадобиться щось із перерахованого, це може зашкодити, і вам може бути краще з .net . Принаймні, це аргумент, який слід взяти до уваги.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.