代码之家  ›  专栏  ›  技术社区  ›  TheTXI

从C到Java迁移项目

  •  10
  • TheTXI  · 技术社区  · 15 年前

    随着办公室人员配置的一些变化,C语言的专业水平急剧下降,现在有更多的Java开发人员。它已经到了高层正在考虑把一个现存的.NET项目转移到Java世界的时候。

    除了明显的问题 starting completely from scratch 有什么可能的方式,这家公司可以完成一个项目的成功发展,从.NET C到Java?

    14 回复  |  直到 7 年前
        1
  •  19
  •   isntn    15 年前

    以下是需要考虑的事项:

    • 这是个大项目吗?如果是,试着用c#
    • 这个中型项目有组件吗?如果没有,试着用c#
    • 这个小项目是只部署在Windows上吗?如果是,试着用c#
    • 这是旧的源代码吗?如果是,试着用c#
    • 您是否使用Windows操作系统特定的API?如果是,试着用c#
    • 使用没有Java对应的任何第三方API吗?如果是,试着用c#
    • 您是否在“deep”(数据绑定、用户控件等)中使用.net?如果是,试着用c#
    • 迁移时间比获得新的/转换的C人更容易接受?如果没有,试着用c#
    • 如果你想使用Java框架来改变演示文稿,你认为最终用户不会接受变化吗?如果是,试着用c#
    • 检查广告

    如果您决定转换:

    • 按组件执行
    • 逐层
    • 有很多测试
    • 检查是否有工具可以帮助迁移(无论帮助有多小)
        2
  •  15
  •   Pablo Santa Cruz    15 年前

    为了补充布瑞恩和埃里克的观点,我认为,对于Java开发人员来说,选择C语言应该是直截了当的。它们是概念上非常相似的语言,我建议您培训Java开发人员以获得一些C语言技能,这样您就不会被迫去迁移过程的麻烦。

        3
  •  5
  •   Community CDub    7 年前

    我赞同乔尔的观点 a total rewrite is almost always a mistake .其他的海报是正确的:C和Java是足够相似的,任何有能力的Java开发者都应该能够在数周或数月内成为C语言的能手。这并不是说他们会成为专家。这需要更长的时间,但是只要你有一些C开发人员可以指导这个过程,那么你就应该没事了。

    在不了解应用程序的具体情况(大小、应用程序类型、行业等)的情况下,很难评论这种转换是好是坏。

    我对这种转变非常沉默,因为在我看来, C# is now a much more modern language than Java 我对你说这是一个十多年来一直从事Java开发的人(自从1.0.2/1.1天)。

    这并不是说Java是坏的。不是这样。Sun确实有一个云悬在其上,表明了近年来不愿意或无法推动平台向前发展。

        4
  •  4
  •   Daniel Earwicker    15 年前

    不管涉及哪种语言,这家公司的管理层听起来都很疯狂。对于除了一个微不足道的应用程序以外的任何东西,从零开始重写一个完整的代码库,而不是仅仅雇佣一个掌握正确语言的人,这在经济上是明智的吗?这是不是有一个众所周知的问题:多余的现金太多了?!

    现有代码开发多长时间了?如果还没开始,我能理解。如果它看到一个版本并且有活跃的用户,它将 从未 扔掉它是有道理的。如果你把C代码捐赠给一个拥有正确技能的初创企业,想想他们会给你多少先发制人的机会。

        5
  •  4
  •   Esko Luontola    15 年前

    在将.NET项目转换为Java之前,所有参与转换项目的Java开发人员都会学习C语言。因此,你不再需要把它转换成Java(你可以扔掉所有在转换中产生的Java代码),因为现在你有一个可以同时开发Java和C语言的开发团队。问题解决了。D

        6
  •  2
  •   Brian    15 年前

    如果有任何组件已经被隔离,或者其中的任何组件使用面向服务的体系结构,那么可以想象,您可以一次迁移一个组件(其中每个组件都是重写的),并且仍然让组件使用相同的可互操作网络协议彼此对话。可能取决于我们所说的应用程序的类型。

        7
  •  2
  •   EricSchaefer    15 年前

    确保你有 大量测试 因为这样的迁移会在你最不期望的地方咬你。

        8
  •  1
  •   Gary.Ray    15 年前

    在生产中是否有更多的.NET或更多的Java应用程序。如果您已经在.NET服务器和应用程序中投入了大量的资金,为什么不要求Java开发者中的志愿者移动到.NET?语言和语法非常相似,所以最困难的部分就是学习框架,除非他们把所有的时间都花在UI开发上,甚至学习框架也不是那么困难。

    在我们的办公室里,我们有许多非常优秀的开发人员,在需要的时候,在Java和.NET之间来回移动。

        9
  •  1
  •   Srikar Doddi    15 年前

    为了向管理层证明这一点,您总是需要谈论投资回报率和数量。向他们展示,如果您移动这些应用程序,将花费大量的时间和质量保证资源,并且如果由于其他项目或新开发的重要性而取消优先级,则很容易退居二线。

    当我向他们展示时间表、投资回报率、涉及的工作、涉及的资金等时,我取得了成功。

    现在到了实际的一点,我认为Java开发者能够支持C语言,除非他们对微软技术有一些基本的心理障碍。

        10
  •  1
  •   gbjbaanb    15 年前

    看一看 Net2Java 它支持将代码从C语言转换为Java。我怀疑它是否是完美的,但它是一种从任务中删除大量繁重工作的方法,这会让您陷入不兼容的框架调用和语言特性的纠结之中。

    完成之后,您的任务就像其他大型迁移项目一样——再次测试、测试和测试。单元测试、系统集成测试,然后是最终用户测试。除了单元测试之外,您应该已经有了与原始应用程序一起使用的那些测试,它们仍然是相关的。

        11
  •  1
  •   Thorbjørn Ravn Andersen    15 年前

    如果决定这样做,您将很可能从混合方法中获益,在这种方法中,基本上可以在同一个应用程序中混合C语言和Java,因为它将改变从瀑布转换到渐进迁移的场景。在这里,我知道两种可能性:

    1)IKVM(IKVM) http://www.ikvm.net/ 它允许您在.NET运行时运行Java代码。这允许Java代码调用C代码,反之亦然。然后,您可以冻结C代码开发,并将修改后的功能缓慢添加到Java部分,同时保持功能性应用程序。

    2)Mainsoft( http://dev.mainsoft.com/Default.aspx?tabid=130 它允许您将.NET字节码编译成Java字节码。他们有一个免费进入版本。我没有这个产品的经验,但是他们在我们的平台上大量广告,只有Java可用。

        12
  •  0
  •   chakrit Dutchie432    15 年前

    我不是Java专家,但从我的经验,作为Java代码的Java程序员,以下是一些可能的头痛:

    • 在爪哇和C语言中,泛型的实现方式不同。
    • JAVA和C语言之间的装箱/拆箱行为是不同的。
    • Java类命名约定+批量C生成代码
    • 字符串处理(即Unicode/ASCII关注)可能取决于被移植的Java/C代码的质量。

    就我个人而言,我认为白手起家根本不是个坏主意。因为你已经有了一个有效的架构。

        13
  •  0
  •   User    15 年前

    我有点惊讶,甚至没有人提出拒绝移民的想法。

    我不相信一个C开发者会被迫切换到Java(反之亦然),因为他被告知(如果他被枪威胁的话)。我花了很多时间、锻炼和热情来掌握至少一个技术栈。你不能一夜之间就开始使用一种新技术并期望提供同样的质量。

    在被告知开始迁移之前,我个人不会麻烦。在这一点上,我会告诉经理我是.NET的家伙,不会因为他们决定这么做而转向其他技术。

    至于技术方面,不是语言语法的不同,而是库及其特性。当然,如果.NET 3.5所有最新的铃声和口哨都被广泛使用,那么语言差异将给您带来真正的挑战。

    这确实是一种有趣的方式,只是决定将应用程序从.NET迁移到Java。有人不知道有什么麻烦…

        14
  •  0
  •   Pavel Savara    14 年前

    可能你可以用 jni4net - opensource bridge ? 或列表 other options 我知道。