2009-03-29 3 views
4

Так много серверных и мобильных приложений Java используют родной язык Java для Java. Можем ли мы использовать Jython вместо этого для создания корпоративных приложений, например. сайты, серверы приложений и т. д.Может ли Jython заменить Java?

Также, что вы чувствуете о приложениях Java ME в Jython.

P.S. Комментарии к вопросу также приветствуются.

ответ

4

Нет, Jython не является подходящей заменой для Java. Рассмотрим, например, что он не предоставляет возможности для реализации интерфейсов без написания интерфейса в Java, а затем для записи класса, использующего его в Jython.

Для этого необходим эквивалентный JVM эквивалент Boo. Boo - это язык, ориентированный на .NET CLR, который примерно вдохновлен Python, но не совместим, и который полностью раскрывает функциональность CLR (таким образом, она эквивалентна функции C#). В настоящее время нет языка Pythonic с паритетом характеристик с Java - и такой язык обязательно будет несовместим с Python, поскольку Python просто не предоставляет способ выразить некоторые из соответствующих понятий (например, информацию о наборе интерфейса).


Поскольку есть некоторые вопросы по этому поводу, но мне уточнить:

Jython не является заменой для Java в том смысле, что вы не можете взять произвольный проект Java, решили реализовать случайный подмножество этого проекта в Jython вместо этого, и никому другому в команде разработчиков не известно или не заботится. Разумеется, Jython подходит для многих из тех же классов проектов, что и Java, , за исключением случаев, когда вы создаете интерфейс, который будет вызываться из Java, а не наоборот. Учитывая, что «корпоративные приложения» имеют тенденцию иметь множество компонентов, которые тесно взаимодействуют друг с другом, важно создавать класс с произвольным внешним интерфейсом ... и это то, что нелегко сделать в чистом Jython.

+0

-1 Предполагается, что без поддержки необходимы интерфейсы. Не то, чтобы Jython мог или должен заменить Java, но это произвольные рассуждения. –

+1

@Jesse - Тот факт, что Java-язык может использоваться для создания внешнего видимого интерфейса, который Jython не может означать, что Jython обладает меньшей выразительной способностью в отношении доступа ко всем функциям объектной системы Java. Если язык A может выражать только подмножество вещей, которые может выразить язык B, как вы можете назвать его заменой? –

+1

@Charles, Если бы я сказал вам, что автомобили не могут заменить конные экипажи, потому что автомобили не могут производить навоз, и они не предоставляют вам средства для сокращения запасов кормов для лошадей, каков будет ваш ответ? –

3

Нет, Jython не может заменить Java, потому что Python динамически типизирован. Да, Jython может использоваться для серверных приложений.

Jython не подходит для Java ME, потому что Java ME имеет очень ограниченные ресурсы. Может, несколько лет спустя.

Edit: динамически типизированных, не слабо

+3

Python строго типизирован. Разница в том, что его переменная является динамической, означая, что переменные являются ярлыками вокруг объектов. http://shriphani.com/blog/2008/05/11/python-variables/ – gregturn

0

Вы можете использовать Jython для этих доменов. Очевидно, что мир для веб-разработки движется к динамически типизированным языкам как Python или Ruby. Jython хорош в этом домене, поскольку он позволяет использовать полный «стек Java» (сервер приложений, Tomcat, инфраструктуру развертывания и тестирования, ...) на предприятиях. Вы также можете реализовать свою бизнес-логику на Java.

Однако Jython не является заменой Java, так как это C#. Вы можете повысить производительность программистов, но вы потеряете производительность и скомпилируете проверку времени. Языки действительно разные и «оптимизированы» для разных задач. Я бы предложил оценить Jython для небольших, некритических задач, например. начав внедрять в него некоторые тестовые примеры.

Я сомневаюсь, что Jython полезен для разработки Java ME. Причины приведены в других сообщениях: Ограничения ресурсов.

+1

«Языки действительно разные и« оптимизированы »для разных задач». Какие задачи вы найдете лучше? – Xolve

1

Да. Динамические языки - это будущее. Я слышал это от представителей SUN примерно один год назад. Удивительная часть Jython - это «родное» использование java-библиотек. Услуги и другие компоненты могут оставаться на Java, но уровень интеграции будет двигаться точно в направлении динамических языков. Я думаю, что Python изначально объектно ориентирован, как Java, поэтому они так хорошо подходят. Я не ожидаю чего-то подобного от других языков сценариев, таких как Perl, но наверняка Ruby и Groovy также являются хорошими альтернативами.

4

Это зависит в значительной степени от ваших требований. У всех языков есть свои сильные и слабые стороны. Нет идеального языка, и разумные решения о выборе языка - важный навык для программиста.

Я не согласен с Чарльзом в том, что Jython не может заменить Java, потому что вы не можете реализовать интерфейсы. В динамических языках это рассматривается как функция, которой вы не нуждаетесь Интерфейсы (см. Утиная печать).

Jython использует отличные языковые возможности Python и сочетает его с легким доступом к огромной коллекции библиотек Java. Однако у него есть цена с точки зрения накладных расходов, и, будучи довольно новым языком, у вас меньше программистов и поддержка для поддержки вас.

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

Так будет ли Jython заменять Java? Нет, я не думаю, что это будет - импульс за Java слишком велик. Но мы увидим все больше программного обеспечения с частями, написанными на Jython и других языках, ориентированных на JVM.

+0

Я согласен с тем, что интерфейсы - злой хак. Однако, если вы создаете API для потребления по коду, написанному на родной Java, этот хак имеет тенденцию становиться необходимым. Если мы говорим об истинных «корпоративных приложениях», в конце концов, вы хотите иметь возможность передавать сторонние компоненты самому низкому покупателю ... и низкие участники торгов с большей вероятностью знают Java, чем Python. –

+0

@Charles, в этом красоту Jython - сторонние компоненты могут быть Java, и вы можете использовать их с Jython без каких-либо дополнительных усилий. Как я уже сказал, я не думаю, что это заменит Java, но это тем более полезно. –

+0

только в том случае, если внешний компонент не пытается вызвать код Jython изначально. Если вызывающее соглашение одностороннее, а не двунаправленное, да, нет проблем. –

Смежные вопросы