Java对.NET
net和java之比较

最近公司要开发Windows平台上的产品(由于涉及到商业机密,所以目前无法对这个产品做详细介绍),采用.Net技术进行开发,我负责的是基于 Visual Studio插件机制的行业开发工具的开发。
从开始接触.Net到现在已经有近三个月了,而且也开发出了第一个版本,对.Net已经有了一些认识,由于以前主要用Java、Python等语言进行开发,因此有意无意的就对这些语言进行了比较。
和Java比起来,.Net的优势还是很多的,比如快速开发能力、基于Windows 特性进行开发的能力、内置的丰富类库、一些高级语法、组件的多版本管理等。
优点是不用过多夸耀的,缺点我则要好好的“批评”一番的,因为“谦虚使人进步,骄傲使人落后”嘛,呵呵。
开发场景为:使用Visual Studio2005进行C#的开发、使用Eclipse进行Java开发。
1、HotSwap:在Java中HotSwap技术给程序的调试带来非常大的方便,比如可以让程序一边调试一边修改代码,代码修改以后在程序中立即就可以看到修改后的效果,不用每次修改以后都要重新启动程序;在.Net中几乎不允许这样做,只有在非常苛刻的几个情况下才可以实现在调试状态下修改代码,而且一旦代码段被执行过了就肯定不允许再修改了,这就导致每次修改代码都要频繁启动程序,非常繁琐。
2、基于.Net的东西和Windows结合过于紧密,而且和Windows平台下一些旧有技术有太多千丝万缕的联系,导致用起来非常麻烦。
比如每个对外部系统暴露的接口传来传去最后看到的类型是_ComObject,要想得知其真正的接口类型就必须通过COM技术来取得,非常麻烦;开发的很多组件都需要到注册表中注册,增加了部署的难度。
3、Visual Studio中代码的即时查错能力非常弱,很多的要到编译时才能知道代码是否有错;而在Eclipse中在编写代码的时候对于有错误的代码和有警告的代码(比如一些Private成员没有被引用)可以立即清晰的提示出来,开发人员可以立即修改有错误的代码。
Java客户端调用.NET的WebService实例

Java客户端调⽤.NET的WebService实例项⽬需要去调⽤.NET的WebSrevice,本⾝是Java,研究了半天,终于有些头绪,记下来。
1,新建.NET WebService。
只在原⽅法上加上⼀个string类型的参数str[WebMethod]public string HelloWorld(string str){return "Hello World";}2,新建Java的WebService客户端,lib引⼊以下5个jar包(我是⽤idea⽣成的WebService客户端,会下载7个包,我试着删掉了log4j和saaj两个包也能正常运⾏)import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;import space.QName;import javax.xml.rpc.ParameterMode;public class HelloWorldClient {public static void main(String[] argv) {String endpoint ="http://localhost:64662/WebService1.asmx?wsdl";try {// 定义服务Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(endpoint);call.setOperationName(new QName("/", "HelloWorld"));call.setSOAPActionURI("/HelloWorld");call.addParameter(new QName("/", "str"),// 这⾥的str对应webservice参数名称XMLType.SOAP_STRING, ParameterMode.IN);call.setReturnType(XMLType.SOAP_STRING);String retVal1 = (String) call.invoke(new Object[] {"Hello World!"});System.out.println(retVal1);} catch (Exception e) {e.printStackTrace();}}}注:1,⽹上看到有直接写成call.setOperationName("HelloWorld"),我试过不⾏。
JAVA与.NET的对比

.Net与JAVA的对比一、分指标对比.Net与Java优劣之争由来已久,各方专家也各执一词。
我们挑选了一些主要指标,将.Net与Java对比如下:对比项.NET JAVA 开发及调试工具代码结构性跨平台移植大型网站应用性能缓存技术低开发成本及周期低维护成本低商业化运行平台成本可扩展性如上图所示,微软的.Net技术和Sun公司的JAVA技术代表了未来网站开发技术的发展方向。
两者都提供了优良的性能和特性来构建大型Web应用。
简单的讲,.Net的优势是低开发成本、低开发周期和低维护成本,缺点是跨平台移植不如JAVA来的直接(.Net采用MONO,可以在Unix、Linux、AIX等系统上运行)。
JSP的优势是支持跨平台移植,缺点是开发成本、开发周期及维护成本比较高。
二、市场占有率分析在开发语言市场占有率上,Java排行重去年的第二降到了今年第三,市场占有份额在下降。
三、Java和.NET 优劣势对比1 .JavaJava创于1995年,是世界上最有名的技术之一,常在各类排行榜拔得头筹,这可能也是开发人员坚持使用它的主要原因。
◼Java的优势Java是一项免费的技术,在Java里创建软件的Oracle JDK(Java开发工具)和Oracle OpenJDK也是如此。
这也使得Java能够与Kotlin、Groovy、Scale等编程语言合作。
1) 跨平台、相容性高就能够同时在Windows、MacOS、Linux 等平台上执行,但是.NET Core也已经实现了跨平台部署。
使用Java 编写的程式,只要做较少的修改就可以在不同平台上执行了,Java 绝对是跨平台的一门程式语言。
2)可以做各式各样的应用Java 的应用范围,相对比较广泛,没有侷限在特定领域。
不论是网站、应用程式、GUI、伺服器,都可以透过Java 撰写而成。
◼Java的劣势1)执行速度缓慢Java 因为功能强大,在一些记忆体处理、资源清理的部分并没有做的比C、C++ 来的好,所以相较之下速度比较缓慢。
java和.net两大平台的分析及互用

摘要在Java平台推出并发展了十多年后, Microsoft的 .net平台闪亮登场,到现在为止,也已经发展了几年了,从最初的版本发展到现在的2.0版本。
java平台有着许多闪亮的地方,而后到的.net平台也有其过人之处。
但是本文所关心的并不是java平台和.net 平台,谁比谁更优秀或谁是谁的终结者,而是两者各自有什么特点,如何和平共处,实现彼此之间的互用。
因为两者实现互用将为软件行业带来极大的惊喜,为企业节省很大的软件投资,包括时间和成本。
本文首先是对java平台和.net平台进行了一个简单的介绍,对这两个平台进行了简单的分析,并且指出了这两大平台各自的优点。
接着讲述了这两大平台实现互用的必要性, 基础和所面对的挑战,然后介绍了实现互用的基本方法: 代码转换, 第三方运行时桥, xml webservice, 面向消息的中间件, 共享数据库, 集成代理程序。
最后是针对互用的未来发展,讲述了一些个人的看法。
毕竟现在的互用技术并不是相当的完善,还有待进一步的发展和提高。
但是相信经过世人的努力,java平台和.net平台的互用将会得到更好的实现,甚至实现所谓的“完美”的结合。
本文只是讲述了java 和.net 的基本知识和基本的互用实现,对于当中的许多复杂问题,如,实现单点登录(共享session),实现事务性,实现安全性……没有进行论述。
关键词: .net远程处理, java, .net, 互用, 互联网服务, xml, 消息, 序列化ABSTRACTJava platform has born and developed for about ten years. After that, Microsoft .net was born and has developed for several years too, from the newest version to the 2.0 version. Java platform has much advantage. But the .net platform also has much advantage. This article does not care about java platform and .net platform who is whose terminator, just want to show the advantage of java platform and .net platform and how to achieve interoperability of java and .net, because if these two platforms can achieve interoperability, it will give the software industry a great surprise, save the money and time for the enterprise. This article first gives a simple introduction about java platform and .net platform, point out the advantage of both java platform and .net platform. Then, talk about the necessary, the base and the challenge of achieving interoperability between these two platforms. Code changing, third party runtime bridge, xml web service, Message-Oriented Middleware, sharing database, Integration Brokers and Orchestration are the basic methods used to achieve interoperability. At the end of this article, there is some opinion of myself about the future of the interoperability. I believe that interoperability of java and .net would be more and more perfect. In this article, some complex issues, such as sharing session, achieving transaction, security etc are not related to.Keywords:.net remoting, java, .net, Interoperability, web service, xml, message, serialization目录摘要 (I)ABSTRACT (II)1绪言 (1)2认识JAVA平台 (2)2.1J AV A简介 (2)2.2J AV A的优势 (5)3认识.NET平台 (7)3.简介 (7)3.的优势 (11)和JAVA的互用 (13)4.1互用的基础和所面对的挑战 (13)4.2实现互用的基本方法 (20)4.2.1通过代码转换实现互用 (20)4.2.2通过第三方运行时桥实现互用 (22)4.2.3通过X ML WEBSERVICE 实现互用 (33)4.2.4使用面向消息的中间件来实现互用 (40)4.2.5通过共享数据库来实现互用 (41)4.2.6利用集成代理程序来实现互用 (42)4.3互用的未来发展 (44)5总结和体会 (45)致谢 (46)参考文献 (47)1 绪言“互用”,是指使用行业标准或被广泛认可的数据描述和通讯协议,在采用不同技术实现的不同平台上运行的功能单元之间进行通讯或者传输数据的能力。
Java调用.net的WebService-阿善的日志-网易博客

Java调用.net的WebService-阿善的日志-网易博客这几天公司需要做一个java和.net项目的整合,其中.net做了一个WebService,需要java来调用。
本以为很容易的一个东西,结果弄了几天才弄好。
最开始.net的Service代码如下(黄色背景是自己增加的代码)://<%@ WebService Language="C#" Class="Service" Debug=true %>using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;namespace Service{[WebService(Namespace="")]/// <summary>/// Service1 的摘要说明。
/// </summary>public class Service : System.Web.Services.WebService{public Service(){//CODEGEN: 该调用是 Web 服务设计器所必需的InitializeComponent();}#region 组件设计器生成的代码//Web 服务设计器所必需的private IContainer components = null;/// <summary>/// 设计器支持所需的方法 - 不要使用代码编辑器修改/// 此方法的内容。
/// </summary>private void InitializeComponent(){}/// <summary>/// 清理所有正在使用的资源。
/// </summary>protected override void Dispose( bool disposing ){if(disposing && components != null){components.Dispose();}base.Dispose(disposing);}#endregion[WebMethod(Description="test")]public string GetTestQuestions(string TeacherName,string Subject){return "11111";}}}=================Java调用代码:public static String GetTestQuestions(String TeacherName,String Subject){String result = "";try{Service service = new Service();Call call = (Call) service.createCall();call.setOperationName(new QName("", "GetTestQuestions"));call.addParameter("TeacherName", XMLType.XSD_STRING, ParameterMode.IN);call.addParameter("Subject", XMLType.XSD_STRING, ParameterMode.IN);call.setTargetEndpointAddress(new URL(""));result = (String) call.invoke(new Object[] { TeacherName, Subject});}catch(Exception e){e.printStackTrace();}return result;}public static void main(String args[]){System.out.println(UserWebService.GetTestQuestions("aaa", "HOMA060E"));}--------------------结果用java调用时总提示:faultString: 服务器未能识别 HTTP 标头 SOAPAction 的值:。
java 调用.net webservice的方法

java 调用.net webservice的方法在Java和.NET之间进行交互通常涉及到两种不同编程语言和平台之间的通信。
其中,.NET Web服务是一种常用的跨平台通信方式。
在Java中调用.NET Web 服务,可以通过多种方式实现,包括使用HTTP客户端库、SOAP库和Web服务适配器等。
下面将介绍一种常见的方法,以帮助您在Java中调用.NET Web服务。
一、准备工作1.确保您的Java应用程序已经安装并配置好。
2.确保您的.NET Web服务已经发布并可用。
3.安装适当的Java HTTP客户端库或SOAP库,以便在Java中调用Web服务。
二、Java调用.NET Web服务的步骤1.创建HTTP客户端对象使用Java HTTP客户端库(如Apache HttpClient或Java的HttpURLConnection)创建一个HTTP客户端对象,用于与.NET Web服务进行通信。
```javaHttpClient httpClient = HttpClientBuilder.create().build();```2.构建SOAP请求消息使用适当的SOAP库(如JAX-WS或CXF)构建SOAP请求消息,并将其发送到.NET Web服务。
确保您的SOAP请求符合Web服务的文档描述。
```javaSOAPMessage soapRequest = MessageFactory.createMessage();soapRequest.getSOAPPart().writeTo(System.out);```3.发送SOAP请求使用HTTP客户端对象将SOAP请求消息发送到.NET Web服务。
您可以使用HttpClient对象的execute()方法执行HTTP请求。
```javaHttpResponse httpResponse = httpClient.execute(webServiceUrl, context);```4.接收SOAP响应消息从Web服务的响应中获取SOAP响应消息,并解析其内容。
java和.net交换加密算法(java版本)

byte[] bytesrc =convertHexString(message);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
return new String(retByte);
}
public static byte[] encrypt(String message, String key)
throws Exception {
{
String byteString = ss.substring(2 * i, 2 * i + 2);
int byteValue = Integer.parseInt(byteString, 16);
digest[i] = (byte)byteValue;
}
return digest;
}
public static void main(String[] args) throws Exception {
String key = "12345678";
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
return cipher.doFinal(message.getBytes("UTF-8"));
String value="中国广西壮族自治区北海市四川路12号";
String jiami=.URLEncoder.encode(value, "utf-8").toLowerCase();
JavaVS.NET:Java与.NET的特点对比

:Java与.NET的特点对⽐⼀、前⾔为什么要写Java跟.NET对⽐?.NET出⽣之后就带着Java的影⼦。
从模仿到创新,.NET平台也越来越成熟。
他们不同的⽀持者也经常因为孰弱孰强的问题争论不休。
但是本⽂并不是为了⼀分⾼下。
⽽是针对Java平台跟.NET平台做⼀些对⽐。
主要围绕项⽬构建、Web框架、项⽬部署展开讨论。
相信经过这些讨论可以让Java/.NET⼯程师对Java平台、.NET平台有更好的了解。
⼆、项⽬构建项⽬构建⼯具⼯欲善其事必先利其器。
开发环境配置+⼯具使⽤当然要先讲了。
1、表⾯上的⼯具平台⼯具的解释.NET Visual Studio微软官⽅IDE,它具备了开发.NET应⽤程序的⼏乎所有⼯具Java Idea/Eclipse IDE,负责管理项⽬以及代码的运⾏调试等,依赖于JDKJava Maven负责管理项⽬模板、打包(jar包等),依赖于JDKJava JDK JRE(Java项⽬运⾏环境),Java⼯具(编译器等).NET⼯程师要开展⼯作,安装Visual Studio(后⾯简称:VS)就可以进⾏开发了。
但是Java开发,只安装IDE是不⾏的,就算某些IDE会⾃动安装JDK,甚⾄是Maven,但是这些还是需要⾃⼰配置,不然还可能会踩坑。
从开发环境的配置来说,.NET⼯程师操作上确实简单⼀些,⼀直下⼀步,等待安装完成即可。
Java⼯程师就先要了解下⼯具,以及各个⼯具的职责。
然后逐⼀配置。
从这个点上来说,Java的⼊门曲线会稍陡⼀些,但是Java⼯程师也会⽐.NET⼯程师更早关注到项⽬构建的重要环节。
2、实际上的⼯具职责.NET平台Java平台的解释项⽬管理VS IDEA/只有微软官⽅IDE,Java没有官⽅的IDE,没有VS好⽤,但是有多个选择项⽬模板VS+MSBuild IDE+Maven.NET项⽬的模板是VS⾃带的,是直接符合MSBuild(编译器)标准的,项⽬由sln+csproj⽂件组织,Java平台编译器的标准是公开的,⽬前主流项⽬都是基于Maven模板来创建,项⽬由pom.xml⽂件组织。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
看看它在.NET 上是什么样
代码编写量比较
17500 15000 12500 14,273
代码量 (越少越好)
.NET Pet Shop
10000
J2EE Pet Store
5,891 3,484 5,404
7500
5000 1,881 2500 863 684 412 56 2,566
总代码行数
用户界面
中间层
数据层
配置
代码编写量比较
实现同样的功能需求:三分之一的代码编写量
.NET 4410行,J2EE 14273行
配置减少:
.NET 74行,J2EE 2566行
中间层减少:
.NET 710行, J2EE 5404行
简单就是美
代码减少意味着什么:
拥有成本低 更易于维护
.NET 平台
Java-- 2k至3k C# -- 3k至4k
软件企业从业人员分析-学习周期
J2EE Java
J2EE
各种企业标准
应用
完全达到企业录用标准需要6至12个月
.NET C# &.NET
应用
完全达到企业录用标准需要3个月,最长需要5个月
Java
大比拼
.NET
PetShop 大战
J2EE体系结 构的经典之作
技术发展方向分析
பைடு நூலகம்
第四季度微软公司销售额达到108.2亿美元, 纯利润为34.6亿美元 截止至2004年4月微软储备金达530亿美元
软件企业从业人员分析-薪水对比
顶级级开发人员
Java--1万至2万 C# -- 1万至2万
中级开发人员
Java-- 6k以上 C# -- 6k以上
初级开发人员
软件开发技术分析-Java
Java
开发环境繁多 面向对象,语法舒展流畅易于理解 调试不方便 跨平台性好但不同平台之间仍有差异 开发Web程序为主,并可以进行Wap 开发
软件开发技术分析-C#
C#
拥有世界上最好的开发和调试环境 面向对象,语法舒展流畅易于理解 调试非常方便,开发效率极高 已经有Linux上可以使用C#程序 可以开发Web程序,可以开发 WinFrom (C/S )程序,还可以快速Wap开发
技术发展方向分析
2004财年第四季度的净收入为7.95亿美元 Sun实现了销售业绩近三年来的首次增 长,但却主要得益于其2004年4月2日与微软达成 的和解协议--Sun因此获得了19.5亿美元 Sun曾在2001年10月宣布裁员3900人, 并于2002年10月也曾再度宣布裁员4400人 2004年施瓦茨升任首席运营官的当天, 他表示公司将实施3300名的裁员计划,随后Sun将 裁员人数增加打到3500人,而2005年增加到了 3600人。
Java对.NET
主流开发技术现状
主流开发技术两大阵营 J2EE Java
.NET
C#
软件开发技术分析-J2EE
J2EE
大型应用 开发标准多 开发中使用的服务器和技术差距较大 使用广泛
软件开发技术分析-.NET
.NET
中小型开发为主 开发标准唯一 开发中使用同一服务器 使用广泛
性能比较
300
事务响应时间 (毫秒)
事务响应时间 (越短越好)
.NET Pet Shop
302
250 200
J2EE Pet Store
150 69 50 50 18 19 57 20 22 23 97
100
3,000
3,500
4,000
4,500
5,000
并发用户数
占用CPU百分比比较
那究竟是什么让.net 有这么好的表现?