Какие языки должен использовать microISV для написания коммерческого программного обеспечения? - PullRequest
3 голосов
/ 02 мая 2010

Я пишу программное обеспечение на Java уже много лет, но это всегда было для внутренних приложений, которые будут развернуты на сервере.Я бы хотел начать писать настольные приложения, но не знаю с чего начать.Я написал несколько приложений на Java / Swing, но опять-таки они были предназначены для внутреннего использования.

Насколько я понимаю, Java и другие полукомпилированные и интерпретируемые языки слишком просты для обратного проектирования, что делает их непригодными для коммерческого программного обеспечения,Я знаю, что есть компиляторы для Java и некоторых других интерпретируемых языков, но я также слышал, что они дорогие и / или ненадежные.

Предполагается, что я запускаю microISV и хочу разрабатывать и продавать приложения дляШирокая аудитория, какая моя лучшая ставка?Я бы предпочел что-то, что может быть написано почти один раз и скомпилировано для разных операционных систем, но я не против .NET и только для Windows, если другие языки могут поставить под угрозу опыт (простота установки и пользовательский опыт) в Windows.Моя единственная проблема заключается в том, что у меня нет большого стартового бюджета, и выплата wazoo за необходимые инструменты разработки на самом деле не в картах.

Ответы [ 5 ]

3 голосов
/ 02 мая 2010

Почему люди хотят перепроектировать ваше программное обеспечение? Они могут его пиратствовать, но вы не можете предотвратить пиратство, независимо от того, какой язык вы используете. Я сомневаюсь, что у вас есть сверхсекретный алгоритм, который вы пытаетесь скрыть, и в этом случае может возникнуть проблема с обратным инжинирингом.

Вы должны идти с тем, что знаете лучше всего, и Java может отлично работать.

Если вы намереваетесь перейти на другой язык, я рекомендую взглянуть на Qt. Qt - это бесплатный кроссплатформенный инструментарий с открытым исходным кодом для C ++, который позволяет писать приложения для компиляции и запуска на Windows, Mac и Linux с минимальными усилиями. Вы можете бесплатно написать коммерческое программное обеспечение с помощью Qt с лицензией LGPL.

Редактировать: GCJ компилирует Java в собственный код, но поддерживает только Java 1.4.

0 голосов
/ 02 мая 2010

Я скептически отношусь к риску обратного проектирования сложного программного обеспечения, написанного на Java, но для целей вашего вопроса я готов это оговорить. Я предполагаю, что те же самые проблемы исключают любой другой язык, который реализован только в JVM.

Наиболее существенными аспектами Java являются

  • Система статического типа
  • Система классов на основе классов
  • Автоматическое управление памятью
  • Нет автономных функций или модулей вне системы класса / интерфейса
  • Дженерики

Эта комбинация может быть воспроизведена на языке, подобном C #, но я предполагаю, что те же возражения, что и у вас относительно распространения байт-кода JVM, также применимы к байт-кодам MSIL.

Мне трудно придумать язык, который обладает всеми этими функциями. Вот несколько близлежащих языков:

  • C ++ имеет все, кроме автоматического управления памятью, плюс он позволяет автономные функции. Однако универсальный механизм (шаблоны) C ++ не для слабонервных, и он (пока) не поддерживает модульную проверку типов. Гораздо больше гибкости, чем Java, но и гораздо больше способов оторваться. Используйте с осторожностью.

  • В Modula-3 есть все вышеперечисленное, но по сути это мертвый язык, плюс, как и в C ++, нет модульной проверки типов для обобщений.

  • Я недостаточно знаком с Эйфелевой, чтобы иметь возможность проводить хорошие сравнения, но я думаю, что стоит посмотреть.

  • Delphi тоже стоит посмотреть. Вроде бы все выше, кроме дженериков. В первую очередь это проприетарная среда Windows (ранее известная как Object Pascal), но, похоже, существует компилятор с открытым исходным кодом «Free Pascal», который поддерживает Delphi.

  • Существует множество объектно-ориентированных языков с автоматическим управлением памятью и динамической типизацией, среди которых можно выделить ruby, Python и Smalltalk. Ничто из этого не компилируется хорошо и надежно в автономный машинный код, хотя все они подталкивают к некоторой форме экспериментальной компиляции. И все они динамически набираются, что сильно отличается от того, к чему вы привыкли.

Если бы я был на вашем месте, я бы, вероятно, пошел на использование Java и допустил бы некоторый риск реверс-инжиниринга. Декомпиляторы не так хороши, как вы могли подумать, и они также не создают кода, который можно легко поддерживать. Но если вы действительно хотите иметь возможность создавать собственный машинный код, я бы исследовал Delphi и Eiffel. (Я бы сам использовал Modula-3, но это потому, что я однажды вложил значительные усилия в его изучение. Это очень хорошо продуманный язык для своей ниши, но сообщество пользователей уже ушло, и я думаю, что это пустая буква. Жаль.)

0 голосов
/ 02 мая 2010

Любой код может быть в некоторой степени декомпилирован. Я думаю, что вы можете запутать Java до такой степени, чтобы сдержать случайного пользователя ... но я думаю, что другие люди бьют по голове Из всех причин не использовать Java простота декомпиляции должна быть очень и очень низкой в ​​вашем списке. Если это все, что вам мешает, дерзайте! Google Java obfuscater, и вы найдете что-нибудь.

0 голосов
/ 02 мая 2010

Если вы создаете компанию, состоящую из одного человека, вы продаете свой личный опыт. Таким образом, язык, который вы используете, должен быть тем (или, может быть, двумя), с которым вы наиболее знакомы и опытны. Я удивлен, что вы посчитали необходимым спросить об этом.

0 голосов
/ 02 мая 2010

Что ж, если вы пытаетесь быть независимым поставщиком услуг, а не поставщиком программного обеспечения, то в некотором смысле это не имеет значения, если вы используете такой язык, как Java, который можно декомпилировать. Потому что вы будете продавать себя как лучший человек для интеграции и настройки программного обеспечения для ваших клиентов. Программное обеспечение является механизмом доставки вещей, которые действительно принесут вам деньги: вас и ваши навыки. Многие компании получают прибыль, раздавая свое программное обеспечение бесплатно и заключая контракты на свои услуги, чтобы настроить его для своих клиентов. Вы можете немного смягчить проблему декомпиляции Java, используя обфускатор, но это своего рода битва не в том направлении.

Если вы намерены зарабатывать деньги, продавая программное обеспечение, а не услуги, то Java будет относительно рискованным путем.

Все зависит от вашего бизнес-плана.

...