将Java应用程序移植到Go - 任何建议?

时间:2010-04-11 23:52:30

标签: java c go

我们希望用Go重写kodingen.com后端 Java,使用jsvc作为守护程序运行。

我从未接触过我生命中的任何一个C,我只有Java经验,所以我 我不知道这是否应该开始。

然而,任务非常简单

  • 从mysql数据库中读取shell命令
  • 队列并行并行执行
  • 将每个shell输出保存到数据库

就是这样。所以这些简单的要求让我希望能够开始 使用这种美妙的语言。

你会建议什么? C还好吗?

4 个答案:

答案 0 :(得分:3)

我喜欢Go,并为该项目做出了贡献。但是,我认为在确定之前你应该考虑Go的一些事情。

  • Go仍然是一种不稳定的语言。它的语法,功能和包都可能会发生变化。如果您选择使用它,请确保您已准备好跟上它。
  • Go的垃圾收集仍然不成熟。您的内存使用量应该优于1.2 GB,但它可能不会让您接近C级别。
  • MySQL(或任何其他数据库)没有核心支持。有几个非官方的MySQL包项目。最近更新的是 GoMySQLGo-MySQL-Client-Library。我不知道他们有多完整或稳定。

至于排队和并行执行,我认为Go能够做得很好。您可能会使用exec包来执行和并行化goroutines。

答案 1 :(得分:1)

我同意@Chickencha

此时我没有计划更新我的[1]:http://github.com/chbfiv/libmysqlgo“libmysqlgo”项目。欢迎捐款,但我太忙了。我建议使用更活跃的mysql go项目。

答案 2 :(得分:1)

从go langugage FAQ:

  

Go项目被设想   写这种服务器更容易   和谷歌使用的其他软件   内部,但实施   还不够成熟   大规模生产使用。

据我所知,Go的垃圾收集器和调度程序还没有准备好。 而且它的编译器还不够优化,无论如何,C编译器已经改进了20年。 如果你想在生产站点中使用它,那么等待Go​​足够成熟就更好了。

但这并不意味着Go不是一门好学的语言。 实际上,我很高兴使用它来开发一些有用的实用程序。

编辑:在你切换到另一种语言之前,如何使用即将推出的JDK 7进行一些实验。垃圾收集有一些改进。 在您的情况下,您可以更好地检查内存管理。

答案 3 :(得分:1)

我认为随着最近的恐慌/恢复,Go开始成为网站后端的可行选择。我一直使用Go运行几个简单的facebook应用程序,但令人沮丧的是整个应用程序因地图键错误或空指针异常而失败。通过恐慌/恢复,可以管理崩溃。

关于您的要求 - 对于mysql和shell命令应该没问题。但要准备补丁一些库:)