java

位置:IT落伍者 >> java >> 浏览文章

Java和.NET在开发中的不同盘点


发布日期:2022年04月13日
 
Java和.NET在开发中的不同盘点
我是用VS和VS开发NET程序通过MyEclipse开发JAVA程序下面从IDE语言插件的不同点来做下简单的说明但由于经验知识还有限本篇文章只能从比较表面的以及自己常用的功能点来说明我所看到的不同点

IDE的不同点

给我的第一感觉就是MyEclipse在开发过程编写查看代码也非常便利甚至有很多VS没有的功能下面列举自己现在遇到的一些不同点

MyEclipse没有像VS里的#region#endregion一样的代码段区域在一个方法或类里可以#region 功能点…#endregion这样把代码片段折叠起来MyEclipse除非用其他一些插件才能达到这个效果

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哪个版本下编译会比较方便

对于一个大括号或小括号的代码段双击该符号后面则自动选中括号内部的代码段这个可以方便查看一个代码段VS没有这样的功能

调试代码的时候VS就表现出比MyEclipse更强大了它们都可以在断点处修改已经存在的变量的值但是VS在监控临时变量框里输入变量时同样可以智能提示自己写的代码而MyEclipse不能自动提醒并且VS可以拖动断点到已经运行的代码这个功能在调试问题时是非常强大和有用的但是MyEclipse不能拖动断点

MyEclipse双击代码编辑框里文件的Tab栏就可以切换全屏显示代码编辑块和多框显示这点比VS更方便一点Package Explorer框的旁边有个Link Vith Editor按钮可以快速定位文件在包里的位置这个也比较方便但是VS里一个文件右键后可以直接选择打开对应的物理文件目录在MyEclipse里没有这个功能

JAVA项目是通过导入方式打开不是通过像VS里双击sln或csproj文件就可以打开整个工程但是打开一次过后下次再打开MyEclipse它都会自动加载已经打开过的项目而VS是每次只能打开一个解决方案解决方案里包括不同项目如果新增了解决方案下次就需要单独打开了

语言的不同点

Java语言和C#语言非常相似虽然内部会有很多区别提供的API也不一样但开发一个具体功能点的思路常用的都差不多由于对比较新的技术和特性开发过程中接触不多我所遇到的不同点包括

JAVA里默认修饰符是包内可见(对应同一个文件夹目录而不是项目大jar包下)的protected的变量和方法都是包内和子类可见的NET里是只有自己和子类可见NET里类的默认修饰符是Internal程序集内可访问方法和字段默认为private的和JAVA默认包内可见不一样

如果找到一个JAR包Java查看新jar包的方法字段描述需要有单独的对应jar包的doc文档才能看到接口调用参数说明否则看起来不直观但是如果有源码打出来的jar包调试的时候可以方便的看到该包的源代码NET里只要有了dll文件就能方便的看到方法元数据调用参数但是看到参数详细说明还是需要对应dll的xml文档

Byte类型的数字范围不一样Java里是NET是一般需要互相交换数据和处理都是转换成进制然后取bit的后个bit这样它们的值都是一样的方便同步加密解密或相关处理

JAVA里文件保存后默认自动编译但是这个也得益于它把每个java文件编译成一个class文件NET里需要单独每次执行编译项目因为它一个项目一个dll文件如果保存其中一个cs文件都执行编译则工作量太大影响开发速度

Java里的Final关键字当给一个字段时表示该字段不能修改构造函数里都不能修改这个和C#的const有点像但是const默认是static的和C#的readonly也比较像但是readonly可以在构造函数里修改当它作为一个方法的修饰符时它类试c#的sealed类不能重写它

Java包的名字是和物理文件位置一一对应的C#里命名空间可以随便写并且编译出来的程序集也可以随便更改可以不和命名空间保持一致程序集和JAVA里单独打出来的jar包是差不多的意思

Java里推荐用getset方法来对内部变量赋值和获取值NET里可以用字段getset获取并且vs后可以直接get;set;的方式借助语法糖编译器后会自动生成等价的getset内部字段

插件的不同点

MyEclipse自身就是一个插件里面集成了大量开源框架而VS是微软一个大一统的IDE要用其他开源插件需要单独下载和单独配置

Java里实现webservice的方法很多除了javaxjws包里只有的JAXWSjava webservice规范自带版本还有axisxfire的webservice开源实现axis包括axisaxisxfire已更名为cxf了但是各种实现方法各异在和NET发布的webservice互相调用时经常遇到一些问题总体来说Java对wsdl的格式要求更严格

上面都是自己最近开发过程中根据自己遇到的问题分析和整理的结果涉及的面有限需要自己以后不断完善相关技术点并且整理和理解的结果也可能不完全准确如有问题请指正

上一篇:网络数据流的java处理

下一篇:java nio 开发实例