首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将我的Java程序集成到用C#编写的项目中?

如何将我的Java程序集成到用C#编写的项目中?
EN

Stack Overflow用户
提问于 2014-05-23 07:17:50
回答 3查看 1K关注 0票数 2

我听说Reddit和Facebook已经用C/C++编写了应用程序的某些部分,以加快运行速度。然而,据我所知,主要平台是用其他语言编写的。他们如何让这些程序协同工作?

我最近用Java语言编写了一个程序,允许我从RESTful资源中推送/拉取数据。一位同事现在要求我实现到他的。不幸的是,他的应用程序是用C#.net编写的,我不知道C#,也不想重写我的代码。是否可以简单地创建某种包装器/填充程序来将两个系统集成在一起,即主C#程序从我的Java程序请求某种类型的数据文件/对象?

此外,简单地学习如何用C#重写程序是不是更合理?

EN

回答 3

Stack Overflow用户

发布于 2014-05-23 08:32:15

实际上,有一个优秀的开源项目可以从.NET语言中使用Java。它被称为IKVM。您可以动态地动态解释Java文件,也可以首先将.class字节码“编译”成.NET字节码以生成.NET程序集,然后将其与一些IKVM一起使用。我已经成功地使用预编译选项将大型Java计算几何库(.class)集成到C#应用程序中。

票数 1
EN

Stack Overflow用户

发布于 2014-05-23 07:23:46

C#和Java在很多方面并没有太大的不同,所以移植你的应用程序可能不是一件很大的事情(当然,这取决于各种因素)。因为它们都是托管语言,所以在调用C#代码而不是原生Java时,我并不期望看到性能提升。

但是,您可能会发现此链接很有用:http://codefry.blogspot.co.uk/2012/01/calling-net-dlls-from-java-code-without.html?m=1#!/2012/01/calling-net-dlls-from-java-code-without.html

票数 0
EN

Stack Overflow用户

发布于 2014-05-23 08:02:41

C#和Java都是解释语言和编译语言的混合体。Java被编译为Java字节码,JVM运行时将其解释为本机指令。C#是用MSIL (微软中间语言)编译的,.NET运行时将MSIL解释为本机指令。C#和Java都有直接与原生二进制文件交互的方法。.NET有Java Native Interface (JNI),虽然Java没有特定的名称,但.NET应用程序也可以与本机程序集交互。由于C和C++编译为本机程序集,因此可以将Java或.NET代码与从C和C++代码生成的二进制文件进行接口。

根据我的经验,当您听说使用本机二进制的解释型语言时,通常是出于以下两个原因之一。第一个是因为本机二进制代码所做的事情足够复杂,以至于解释器的低效实际上会在性能上造成很大的差异。性能关键度较低的代码仍然可以用解释型语言编写,而不会对整体性能产生明显影响,而且解释型语言为您提供了加速开发和提高质量的功能。(例如,大多数解释型语言会自动执行内存管理。)另一个原因是重用。许多工具(如数据库驱动程序)都是以本机格式提供的;与尝试用解释语言重新实现所有这些代码相比,为本机二进制文件提供一个包装器是一种更简单、更便宜(可能也更可靠)的选择。大多数解释型语言都提供了本机接口,因为这些实践被广泛使用。

没有官方支持的方法来连接.NET和Java代码。它们都是解释型语言,除了本机语言之外,很少能找到与任何类型的库交互的语言。

学习C#是否“太难”是一个完全主观的问题,在很大程度上取决于你目前的知识和经验,以及其他应用程序的范围和时间表。因此,我们不能为您回答这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23818604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档