Java和.NET在开发中的不同盘点
我是用VS2008和VS2010开发。NET程序,通过MyEclipse8.5开发JAVA程序,下面从IDE、语言、插件的不同点来做下简单的说明。但由于经验知识还有限,本篇文章只能从比较表面的以及自己常用的功能点来说明我所看到的不同点。
IDE的不同点:
给我的第一感觉就是MyEclipse在开发过程编写查看代码也非常便利,甚至有很多VS没有的功能,下面列举自己现在遇到的一些不同点:
1、MyEclipse没有像VS里的#region,#endregion一样的代码段区域,在一个方法或类里,可以#region 功能点…#endregion这样把代码片段折叠起来,MyEclipse除非用其他一些插件才能达到这个效果。
2、MyEclipse导入新项目,如果JRE版本不一样,需要选择使用本地JRE版本,项目右键->Build Path->Configure Build Path->Libraries->Java Build Path里修改JRE版本,但有时还会出现编译问题,原因是没有选择编译的JDK版本,项目右键->Build Path->Configure Build Path->Java Compiler里修改Compiler compliance level.对于VS,高版本代码打开低版本代码,会自动升级,或者手工选择在。NET哪个版本下编译,会比较方便。
3、对于一个大括号或小括号的代码段,双击该符号后面,则自动选中括号内部的代码段,这个可以方便查看一个代码段,VS没有这样的功能。
4、调试代码的时候,VS就表现出比MyEclipse更强大了,它们都可以在断点处修改已经存在的变量的值,但是VS在监控临时变量框里输入变量时同样可以智能提示自己写的代码,而MyEclipse不能自动提醒,并且VS可以拖动断点到已经运行的代码,这个功能在调试问题时是非常强大和有用的,但是MyEclipse不能拖动断点。
5、MyEclipse双击代码编辑框里文件的Tab栏,就可以切换全屏显示代码编辑块和多框显示,这点比VS更方便一点,Package Explorer框的旁边有个Link Vith Editor按钮,可以快速定位文件在包里的位置,这个也比较方便,但是VS里一个文件右键后可以直接选择打开对应的物理文件目录,在MyEclipse里没有这个功能。
6、JAVA项目是通过导入方式打开,不是通过像VS里双击。sln或。csproj文件就可以打开整个工程。但是打开一次过后,下次再打开MyEclipse,它都会自动加载已经打开过的项目。而VS是每次只能打开一个解决方案,解决方案里包括不同项目。如果新增了解决方案,下次就需要单独打开了。
语言的不同点:
Java语言和C#语言非常相似,虽然内部会有很多区别,提供的API也不一样,但开发一个具体功能点的思路常用的都差不多,由于对比较新的技术和特性开发过程中接触不多,我所遇到的不同点包括:
1、JAVA里默认修饰符是包内可见(对应同一个文件夹目录,而不是项目大jar包下)的,protected的变量和方法都是包内和子类可见的,.NET里是只有自己和子类可见NET里类的默认修饰符是Internal,程序集内可访问。方法和字段默认为private的,和JAVA默认包内可见不一样。
2、如果找到一个JAR包,Java查看新jar包的方法字段描述,需要有单独的对应jar包的doc文档,才能看到接口调用参数说明,否则看起来不直观,但是如果有源码打出来的jar包,调试的时候可以方便的看到该包的源代码NET里只要有了dll文件,就能方便的看到方法元数据调用参数,但是看到参数详细说明,还是需要对应dll的xml文档。
3、Byte类型的数字范围不一样,Java里是-128到127,.NET是0-255,一般需要互相交换数据和处理都是转换成16进制,然后取8bit的后2个bit,这样它们的值都是一样的,方便同步加密解密或相关处理
4、JAVA里文件保存后默认自动编译,但是这个也得益于它把每个java文件编译成一个class文件,.NET里需要单独每次执行编译项目,因为它一个项目一个dll文件,如果保存其中一个。cs文件都执行编译,则工作量太大影响开发速度。
5、Java里的Final关键字,当给一个字段时,表示该字段不能修改,构造函数里都不能修改,这个和C#的const有点像,但是const默认是static的。和C#的readonly也比较像,但是readonly可以在构造函数里修改。当它作为一个方法的修饰符时,它类试c#的sealed类,不能重写它。
6、Java包的名字是和物理文件位置一一对应的,C#里命名空间可以随便写,并且编译出来的程序集也可以随便更改,可以不和命名空间保持一致,程序集和JAVA里单独打出来的jar包是差不多的意思。
7、Java里推荐用get,set方法来对内部变量赋值和获取值,.NET里可以用字段get,set获取,并且vs2008后可以直接get;set;的方式,借助语法糖,编译器后会自动生成等价的get,set内部字段。
插件的不同点:
1、MyEclipse自身就是一个插件,里面集成了大量开源框架,而VS是微软一个大一统的IDE,要用其他开源插件,需要单独下载和单独配置。www.2cto.com
2、Java里实现webservice的方法很多,除了javax.jws包里只有的JAX-WS,java webservice规范自带版本,还有axis,xfire的webservice开源实现,axis包括axis1,axis2,xfire已更名为cxf了,但是各种实现方法各异,在和。NET发布的webservice互相调用时,经常遇到一些问题,总体来说Java对wsdl的格式要求更严格。
Java和.NET在开发中的不同盘点的更多相关文章
- Java 反射在实际开发中的应用
运行时类型识别(RTTI, Run-Time Type Information)是Java中非常有用的机制,在java中,有两种RTTI的方式,一种是传统的,即假设在编译时已经知道了所有的类型:还有一 ...
- [转]Java 反射在实际开发中的应用
一:Java类加载和初始化 1.1 类加载器(类加载的工具) 1.2 Java使用一个类所需的准备工作 二:Java中RTTI 2.1 :为什么要用到运行时类型信息(就是RTTI) 2.2 :RTT ...
- Android学习探索之Java 8 在Android 开发中的应用
前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...
- Java 泛型在实际开发中的应用
java泛型是对Java语言的类型系统的一种扩展,泛型的本质就是将所操作的数据类型参数化.下面我会由浅入深地介绍Java的泛型. 一:泛型出现的背景 在java代码里,你会经常发现类似下边的代码: p ...
- Java 数据类型在实际开发中应用
在前边的博文中,我已经介绍了Java核心的容器IO等,现在我来说一下java中的数据类型.在java中,一切东西皆为对象(这句话意思是java中绝大数情况都用对象),极少数不是对象的,也存在与之对应的 ...
- Java IO在实际开发中的应用
IO是java绕不过去的槛,在开发中io无处不在, 正如同 世界上本没有路,java io写多了,也就知道了大体是什么意思,在读完thinking in java 感觉就更清晰了,结合具体的业务场景, ...
- Java数据类型在实际开发中的应用二枚举类型
在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.在JDK1.5之前,人们用接口来描述这一种数据类型. 1. ...
- Java数据类型在实际开发中的应用一
在前边的博文中,我已经介绍了Java核心的容器IO等,现在我来说一下java中的数据类型.在java中,一切东西皆为对象(这句话意思是java中绝大数情况都用对象),极少数不是对象的,也存在与之对应的 ...
- Java 数据类型在实际开发中应用二枚举
在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.在JDK1.5之前,人们用接口来描述这一种数据类型. 1. ...
随机推荐
- NFS网络文件共享服务
NFS-网络文件系统,它的主要功能是通过网络让不同的主机系统之间可以彼此共享文件或目录. NFS在企业中得应用场景 在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频.图片.附件等静 ...
- 【转】 GDB 常用调试方法
一.多线程调试 多线程调试可能是问得最多的.其实,重要就是下面几个命令: info thread 查看当前进程的线程. thread <ID> 切换调试的线程为指定ID的线程. break ...
- linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析(引用)
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个 ...
- EXTJS 4.2 资料 控件之textfield文本框加事件的用法
{ xtype: "textfield", width: 100, id: "txtGroupName", name: "txtGroupName&q ...
- iOS中的固定 高度
iOS键盘高度 英文 216(不带联想功能) 英文 252(带联想功能) 中文 252 系统自带表情键盘的高度是 253 在使用系统键盘的时候,如果遇到输入框被键盘挡住的情况 就要用通知中心 ...
- Java第一阶段总结
学习java已经一个多月的时间了,第一阶段总算完成了. 这中间遇到很多问题,通过问同学问学长,收获了很多,但也知道自己和其他同学相差很远.他们java第一阶段只用了不到一个月的时间,而我拖了很长时间, ...
- python 开发webService
最近在学习用python 开发webservice,费了半天时间把环境搭好,记录下具体过程,以备后用. 首先系统上要有python.其次要用python进行webservice开发,还需要一些库: 1 ...
- 【搜索】BZOJ 3990: 【Sdoi 2015】排序
3990: [SDOI2015]排序 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 336 Solved: 164[Submit][Status][ ...
- 团体程序设计天梯赛-练习集L2-001. 紧急救援(dijkstra)
L2-001. 紧急救援 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国 ...
- android下调试unity3d应用
原地址:http://blog.csdn.net/armoonwei/article/details/7032455 目前貌似不支持断点调试,但可以通过日志打印(logcat)来跟踪. 在androi ...