之前总觉得C#和Java可以交互应用,但是由于时间以及其他方面的原因,一直没有调研。今天抽空搜了一下,终于折腾出来了。
以下是我自己就C#和Java整合的一些提问和分析,如果有不对的地方,请路过的各位大虾给予指出。3Q!
问题来了:
1、C#和Java如何整合?
2、为什么C#(.Net)要和Java整合?
3、Java和C#整合时,Java主要扮演什么角色?C#扮演什么角色?
答案一一揭晓:
1、C#和Java整合大致有4条路可以走。
1.1 把Java包转换为DLL或者EXE后注册为com组件,之后调用;
1.2 使用web service;(http://www.codeproject.com/Articles/32313/How-to-invoke-Java-web-service-in-ASP-net-using-C)
1.3 使用中间件;比如一个商业的中间件:http://j-integra.intrinsyc.com/;
1.4 使用 IKVM.NET,这是一个在.net 下实现的Java VM,所以在经过一个转换后,直接跑Java的东西;
(以上4点,是我在网上搜的)
我主要说第四点:使用IKVM.NET。
a:下载ikvm-0.40.0.1.zip;ikvmbin-0.40.0.1.zip;openjdk6-b12-stripped.zip;
解压ikvm-0.40.0.1.zip,并将%IKVM_HOME%\bin添加到path中。此处的%IKVM_HOME%是指解压后ikvm的主目录。
b:建立一个JavaProject,自定义包、类、需要透露给外界的方法,然后、将这个JavaProject打包成jar文件。(eclipse和myeclipse都自带的,或者你可以显摆一下,用黑框框敲几个代码整)。
c:狸猫换太子:jar>>dll
打开黑框框(即:win+r,cmd,进入到%IKVM_HOME%\bin的目录下),
执行:ikvmc -out:dllFileNameOrPath.dll javaFileNameOrPath.jar
此时,就会在%IKVM_HOME%\bin目录下或者指定的Path下,会出现一个dllFileNameOrPath.dll文件,置于你的.Net项目中,添加引用,与此同时,请将
%IKVM_HOME%\bin\IKVM.OpenJDK.Core.dll
%IKVM_HOME%\bin\IKVM.Runtime.dll
%IKVM_HOME%\bin\IKVM.Runtime.JNI.dll
添加到你的.Net项目中,切记!
其中,using 后面跟java类的包名。
2、C#和Java整合,不,应该是.Net和Java整合。为啥要整合?
在业间,有人士称,.Net开发除服务层以外的,开发速度快,效率高。而Java做后台服务,安全性、可扩展性高。所以才有牛人将两者整合。目前.Net和Java整合技术的应用,算是一个新旗帜,但目前已经被应用于实际开发了。
3、正如2所说,.Net和Java整合,Java主要承担DAL,也就是和DB进行主要的交互,以及其他通信。而.Net主要承担BLL。
以上是小弟的分析,如果说的不对,请各位路过大神指正!
谢谢!
相关推荐
本话题主要探讨了两种常用编程语言——Java和C#之间如何利用Socket进行通信。Socket是网络编程的基本接口,允许应用程序通过网络发送和接收数据。以下是关于"Java和C#之间基于Socket的通信"的详细知识点: 1. **...
这种方法可以使得C#项目可以调用Java类的方法,从而实现C#和Java之间的交互。 在这个过程中,我们需要使用IKVM(ynamic Runtime Infrastructure for the Java Platform)来将Java类转化成dotnet类。IKVM是一个开源...
C#和Java中都有内置的类库支持RSA加密,如C#的System.Security.Cryptography.RSACryptoServiceProvider和Java的java.security.KeyPairGenerator与java.security.Signature等。 接下来,我们讨论DES(Data ...
本示例主要探讨的是如何使用C#调用Java接口,实现不同编程语言之间的交互。C#和Java都是广泛应用的编程语言,它们各自拥有丰富的库和生态系统,但有时需要在两者之间建立桥梁,以利用各自的优点。本文将详细介绍这一...
标题中的“DES加密JAVA与C#交互绝对可用”意味着我们将探讨如何在Java和C#之间使用DES(Data Encryption Standard)加密算法进行数据安全传输。DES是一种广泛应用的块密码,使用56位密钥对64位的数据块进行加密。...
"C# RSA加密与JAVA解密,实现相互通信"的主题聚焦于如何利用RSA公钥/私钥加密算法在C#和Java两个不同的编程环境中实现安全的数据交换。RSA是一种非对称加密算法,它使用一对密钥——公钥和私钥,公钥用于加密,私钥...
标题:“整合java和c#_Javac#交互_”意味着我们将讨论如何在Java和C#之间建立桥梁,实现代码共享、数据交换以及服务调用。这两个语言分别由不同的公司(Sun Microsystems,现为Oracle,和Microsoft)开发,它们有着...
本文将深入探讨如何在C#和Java之间实现RSA加密解密的交互。RSA是一种非对称加密算法,它基于两个密钥——公钥和私钥,用于确保数据在传输过程中的安全性。 首先,我们关注"JAVA产生秘钥"这一环节。在Java中,我们...
在Web开发中,C#(通常用于服务器端)和JavaScript(主要用于客户端)的交互是常见的需求。这两种语言虽然在不同的环境中运行,但可以通过多种方式实现数据交换和功能调用。 ### 1. JavaScript访问C#函数 #### ...
在这个案例中,我们将重点关注C#与Java之间的交互,特别是涉及安全性的身份验证过程。 首先,让我们了解C#调用Web服务的基本原理。C#主要通过.NET框架中的ASMX或WCF(Windows Communication Foundation)客户端代理...
首先,我们需要理解的是,C#和Java属于两种不同的编程语言,它们运行在不同的虚拟机上:C#运行在.NET Framework或.NET Core上,而Java则在Java虚拟机(JVM)上。然而,通过一些技术手段,我们可以让这两种语言进行...
标题中的“Netty实现Java服务端和C#客户端联通”是指使用Netty作为Java服务器框架,与C#客户端(使用DotNetty库)进行通信的一种技术实现。这涉及到跨平台的网络通信,以及两个不同编程语言间的交互。 Netty是Java...
总结起来,这个压缩包包含的工具主要服务于C#与SQLite数据库的交互以及Java环境的安装更新,涵盖了跨平台开发和数据库管理的基础需求。对于使用C#的开发者,`System.Data.SQLite.DLL`是一个实用的数据库连接库;对于...
Java通过JNI调用C# DLL是一个跨平台、跨语言的技术实践,主要应用于需要利用Java的稳定性和C#的高性能场景。JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。C# ...
在IT行业中,跨平台通信和数据安全是两个重要的议题,特别是在C#和Java这两种不同的编程语言之间进行数据交互时。本篇文章将详细讲解如何在C#中实现与Java的3DES加密以及MD5withRSA签名的对接。 3DES(Triple Data ...
在IT行业中,跨平台通信是一个常见的需求,尤其是在Java和.NET框架之间。本示例主要探讨如何使用Java调用C#编写的DLL文件,...通过理解Jacob的工作原理和实践中的调用流程,可以有效地实现Java和.NET之间的跨平台交互。
在这种场景下,Java创建了一个WebService,而C#作为客户端需要与之交互。 1. **Java WebService创建**: Java开发者通常使用JAX-WS(Java API for XML Web Services)框架来创建WebService。这包括编写一个Java类...
而jni4net则为.NET Framework提供了这样的桥接,使得C#应用程序能够无缝地与Java应用进行交互。 首先,让我们详细了解一下jni4net如何工作。在C#中,你可以通过创建一个`Bridge`实例并使用`Start`方法来初始化Java...
### RSA加密算法实现以及C#与Java互通加解密 #### 一、RSA算法简介 RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir 和 Leonard Adleman 在1977年提出,并以其三人的名字首字母命名。RSA算法的安全性基于...