当前位置: 首页 > news >正文

C#和Java交互相关研究

之前总觉得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。

 

以上是小弟的分析,如果说的不对,请各位路过大神指正!

谢谢!

转载于:https://www.cnblogs.com/gc2013/p/3760928.html

相关文章:

  • 以游戏化思维来做运营工作
  • Django分页、模板继承
  • Linux三剑客
  • [Bada开发]初步入口函数介绍
  • WebSocket初探
  • webpack4 一点通
  • 小米抢购神器-开放源码
  • 互联网企业数据安全体系建设
  • 超过响应缓冲区限制
  • 应用监控的选型思考
  • MyEclipse恢复被删除的文件
  • 贺建奎:愿意用自己孩子第一个尝试,研究不小心泄露,英美也有类似实验
  • 线性回归感觉会有用 临时保存,
  • 什么是UE、UI、UCD、UED?UE、UI、UCD、UED四者的区别(转)
  • 20181126上课截图
  • [PHP内核探索]PHP中的哈希表
  • ES6指北【2】—— 箭头函数
  • Android 控件背景颜色处理
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Android单元测试 - 几个重要问题
  • eclipse(luna)创建web工程
  • es6--symbol
  • Hibernate最全面试题
  • Java 多线程编程之:notify 和 wait 用法
  • jquery cookie
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vue 个人积累(使用工具,组件)
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从PHP迁移至Golang - 基础篇
  • 来,膜拜下android roadmap,强大的执行力
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 使用putty远程连接linux
  • 微信小程序设置上一页数据
  • 我这样减少了26.5M Java内存!
  • 一份游戏开发学习路线
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ###C语言程序设计-----C语言学习(3)#
  • %@ page import=%的用法
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (16)Reactor的测试——响应式Spring的道法术器
  • (Git) gitignore基础使用
  • (WSI分类)WSI分类文献小综述 2024
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (转)Linq学习笔记
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET/C# 使窗口永不获得焦点
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • :O)修改linux硬件时间
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [acm算法学习] 后缀数组SA