Java和.NET开发语言的不同点
Java语言和C#语言非常相似,虽然内部会有很多区别,提供的API也不一样,但开发一个具体功能点的思路常用的都差不多,由于对比较新的技术和特性开发过程中接触不多,我所遇到的不同点包括:
1、Java包的名字是和物理文件位置一一对应的, C#里命名空间可以随便写,并且编译出来的程序集也可以随便更改,可以不和命名空间保持一致,程序集和JAVA里单独打出来的jar包是差不多的意思。
2、JAVA的一个文件只能有一个公共类,而C#可以多个公共类在一个文件里。
3、如果找到一个JAR包,Java查看新jar包的方法字段描述,需要有单独的对应jar包的doc文档,才能看到接口调用参数说明,否则看起来不直观,但是如果有源码打出来的jar包,调试的时候可以方便的看到该包的源代码。.NET里只要有了dll文件,就能方便的看到方法元数据调用参数,但是看到参数详细说明,还是需要对应dll的xml文档。
4、对于WEB开发,JAVA里Filter,Servlet,Listener是很常用的,Java里的Filter可以用.NET里的module来实现一些功能,但Filter可以制定作用请求范围,module是全局控制的;Servlet相当于一个具体的handler,可以对制定请求进行处理,Listerner可以用.NET里的Application_Start里来完成一些功能,但是JAVA里集成了部分默认Listerner,它在WEB应用启动的时候就开始执行。它们的具体执行流程为:WEB启动时,Listener的ContextInitialized方法->所有Filter的Init(不管filter-mapping的值)->所有配置了load-on-startup大于等于0的Servlet的init方法(不管servlet-mapping的值),具体请求为:具体Servlet的init(只执行一次)->Filter doFilter(请求配置的filter-mapping的value)->Servlet service; 最后网站释放的执行顺序为:Filter destroy-》Listener contextDestroyed。
5、Java里的Final关键字,当给一个字段时,表示该字段不能修改,构造函数里都不能修改,这个和C#的const有点像,但是const默认是static的。和C#的readonly也比较像,但是readonly可以在构造函数里修改。当它作为一个方法的修饰符时,它类试c#的sealed类,不能重写它。
6、Java里没有静态构造函数,如果要实现一些初始化工作,需要用静态代码块,static{…},里面输入内容即可,C#只有静态构造函数的说法