Портирование Java-приложения на Go - совет? - PullRequest
7 голосов
/ 12 апреля 2010

Мы хотим переписать бэкэнд kodingen.com с Go , который в настоящее время Java, работающий как демон с использованием jsvc .

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

Однако задача довольно проста

  • чтение команд оболочки из базы данных mysql
  • ставить в очередь и выполнять их параллельно
  • сохранить каждый вывод оболочки в базу данных

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

Что бы вы посоветовали? C еще лучше?

Ответы [ 4 ]

3 голосов
/ 12 апреля 2010

Мне очень нравится Go и я сделал свой вклад в проект. Тем не менее, я думаю, что вы должны рассмотреть несколько вещей о Go, прежде чем остановиться на этом наверняка.

  • Go по-прежнему нестабильный язык. Его синтаксис, функции и пакеты могут быть изменены. Убедитесь, что вы готовы идти в ногу с этим, если вы решите использовать его.
  • Сборка мусора в Go все еще незрелая. Ваше использование памяти должно быть лучше, чем 1,2 ГБ, но, вероятно, оно не приблизит вас к уровню C.
  • Нет основной поддержки MySQL (или любой другой базы данных). Есть несколько неофициальных проектов пакетов MySQL. Самые последние из них GoMySQL и Go-MySQL-Client-Library . Я ничего не знаю о том, насколько они полны или стабильны.

Что касается постановки в очередь и параллельного выполнения, я думаю, что это то, что Go сможет сделать довольно хорошо. Вероятно, вы будете использовать пакет exec для выполнения и распараллеливания с программами.

1 голос
/ 12 апреля 2010

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

О ваших требованиях - должно быть хорошо для команд mysql и shell. Но будьте готовы к исправлению некоторых библиотек :)

1 голос
/ 12 апреля 2010

Часто задаваемые вопросы:

Проект Go был задуман для создания проще написать тип серверов и другое программное обеспечение, которое использует Google внутренне, но реализация еще не достаточно зрелый для крупносерийное использование.

Как я знаю, сборщик мусора и планировщик Go еще не готовы. И его компилятор недостаточно оптимизирован, так или иначе, компилятор C совершенствуется уже 20 лет. Если вы хотите использовать его на производственной площадке, лучше подождать, пока Go станет достаточно зрелым.

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

РЕДАКТИРОВАТЬ: Прежде чем переходить на другой язык, как насчет экспериментов с готовящимся JDK 7. В сборке мусора есть некоторые улучшения. Вы можете проверить, является ли управление памятью лучше в вашем случае.

1 голос
/ 12 апреля 2010

Я согласен с @ Chickencha

На данный момент у меня нет планов по обновлению моего [1]: http://github.com/chbfiv/libmysqlgo "libmysqlgo" проекта. Вклад приветствуется, но я слишком занят. Я бы порекомендовал использовать более активные проекты mysql go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...