有什么区别。NET和JAVA?

深度分析:J2EE vs .NET开发平台

看到这个标题,有些人可能会想,J2EE和。NET都不是一个级别的,怎么放在一起?需要指出的是,所谓的。NET包含了相当广泛的产品家族,包括开发平台、操作系统、服务器、终端设备等。,以及服务平台。开发平台只是整体的一部分。NET策略,所以确切地说。NET放在这里应该算是。NET开发平台。

随着三层和多层企业信息系统结构的深入发展和下一代分布式计算模型Web service的出现,企业应用中平台、框架和语言的竞争也愈演愈烈。在过去几年中,J2EE平台一直引领着企业应用程序的潮流,但最近。NET平台已经开始吸引许多IT企业和开发者的注意,这对J2EE平台提出了强有力的挑战。因此,企业应用领域的技术对抗拉开了架势。

需要强调的是。NET是战略产品,而J2EE是描述产品的标准。现在有许多产品符合J2EE标准。在可预见的未来,它们将是构建企业信息系统应用的基础平台,尤其是开发和部署Web服务的重要平台。

虽然可以同时使用多个系统平台和语言,但是企业需要选择一个战略平台来实现无缝的数据集成,加速企业应用的部署。要做出正确的选择,需要充分了解两个平台的特点和优势。这一期将告诉你更多关于J2EE和。网。

首先,J2EE的集体努力

其次。NET开发平台留住Windows开发者

第三,J2EE和的异同。NET平台架构

4.J2EE vs.net:谁在掌管网络服务的兴衰?

首先,J2EE的集体努力

中南大学罗新星毕文杰

企业应用系统的开发一直面临着巨大的挑战:一方面,企业应用系统面临着异构的分布式环境,必须支持与现有系统的集成和与其他系统的互操作;另一方面,作为为客户、合作伙伴和企业提供信息服务的平台,企业系统还必须具有高可用性、安全性、可靠性和可扩展性。这些需求,加上复杂多变的用户需求和不断扩大的交付时间,使得企业系统的开发越来越困难。开发人员和程序员一直在努力推动并热切期待一个成熟、标准的企业平台来简化和标准化企业系统的开发和部署。Java技术的出现,尤其是J2EE(Java 2 Platform Enterprise Edition)平台的推出就是这种努力的结果,这也使得企业系统的开发更加迅速和便捷。需要指出的是,J2EE本身就是一个标准,它为不同厂商创建平台产品提供了一个标准,使得不同J2EE平台产品之间的交互成为可能。

J2EE之旅

Java是Sun公司在1996年推出的。当时它的主要用途是让Applet生成动态网页。后来人们发现,Java的“开发一次,运行多次”,纯面向对象的特性,垃圾收集机制,内置的安全性,特别适合开发企业应用系统。于是,企业应用开发者在Java标准版的基础上扩展了很多企业应用API,导致基于Java的企业应用呈爆发式增长。但是各种企业系统的API互不兼容,破坏了Java的平台独立性。鉴于此,Sun公司联合IBM、Oracle、BEA等大型企业应用系统开发商,在1998 * *中制定了基于Java组件技术的企业应用系统开发规范,定义了多层企业信息系统的标准平台,旨在简化和规范企业应用系统的开发和部署。该规范及其定义的平台构成了J2EE。目前,J2EE的最新版本是J2EE 1.3。需要注意的是,J2EE本身是一个标准,而不是一个现成的产品(虽然现在有很多符合J2EE标准的产品),它由以下几部分组成:

J2EE规格。该规范定义了J2EE中每个服务和核心API的架构、平台角色和实现要求。这是J2EE应用服务器开发人员的大纲。

J2EE兼容性测试网站。Sun公司提供的用于测试J2EE应用服务器是否符合J2EE规范的网站,Sun公司将向通过该网站测试的产品颁发兼容性证书。

J2EE参考实施。即J2EE SDK,它既是Sun公司自己对J2EE规范的非商业实现,也是基于J2EE开发企业应用系统原型的免费底层开发环境。

J2EE实施指南。即BluePrints文档,通过实例指导开发者如何开发基于J2EE的多层企业应用系统。

组件容器架构

J2EE规范定义了一个基于组件的多层企业应用系统开发平台,其逻辑结构如图1所示。图中的椭圆表示组件,大矩形表示容器,文字向下的小矩形表示API,箭头表示访问,箭头线上的文字表示对应的协议。

J2EE是一个基于组件-容器模型的系统平台,其核心概念是容器。容器是指为特定组件提供服务的标准化运行时环境,Java虚拟机就是典型的容器。组件是一个可部署的程序单元,它以某种方式在容器中运行。该容器封装了J2EE的底层API,并为组件提供事务处理、数据访问、安全性和持久性等服务。在J2EE中,组件之间没有直接的访问,而是通过容器提供的协议和方法相互调用。组件和容器之间的关系由“协议”定义。容器的底层是J2EE服务器,它为容器提供在J2EE中定义的各种服务和API。一个J2EE服务器(也称为J2EE应用服务器)可以支持一个或多个容器。在图1中,你可能注意到了,每个容器的服务都包括两部分:J2SE(Java 2 Platform Standard Edition)和一组扩展服务。这是因为J2EE是基于Java标准版的,每个容器都提供一些基于J2SE的扩展服务,比如目录服务、事务管理、数据访问、消息机制、安全性等等。

J2ee的核心——EJB

J2EE定义了四个组件:Applet组件、应用客户端组件、Web组件和EJB(Enterprise JavaBeans)组件。其中,Applet和应用客户端组件运行在客户端,J2EE通过Java插件为Applet提供运行环境,应用客户端的容器是本地Java虚拟机。Web和EJB组件在服务器上运行。J2EE有两种Web组件:JSP和Servlet。它们都是Web服务器的功能扩展,都可以生成动态网页。不同的是JSP将Java代码嵌入HTML,服务器负责解释和执行,生成的结果返回给用户(类似ASP技术)。Servlet是一个独立的Java类,它动态生成HTML文件并返回给客户。Web组件的典型容器是基于Java的Web服务器。

EJB是J2EE平台的核心,也是J2EE受到业界广泛关注和支持的主要原因。我们知道J2EE的主要目的之一就是简化企业应用系统的开发,让程序员可以专注于业务逻辑的开发。EJB是基于这种思想的服务器端技术,也是一种规范,定义了一种可复用的组件框架,实现分布式、面向对象的业务逻辑。EJB的核心思想是将业务逻辑与底层系统逻辑分离,让开发者只需要关心业务逻辑,EJB容器就可以实现目录服务、事务处理、持久化、安全性等底层系统逻辑。

可展开的EJB组件由三部分组成:

远程接口远程接口定义了EJB组件中提供的可供用户调用的方法,即实现业务逻辑的函数或进程(如计算商品价格的函数)供远程客户端调用。当EJB组件部署到容器时,容器会自动生成远程接口的相应实例,即EJB对象,负责代理用户的调用请求。

Home接口Home接口定义了一组方法来创建新的EJB对象,并查找、定位和清除现有的EJB对象。部署EJB组件时,容器会自动生成相应的Home对象,负责查找和创建EJB对象,并将EJB对象的引用返回给客户。用户使用这个引用来调用EJB组件的方法以获得结果;最后,Home对象清除EJB对象。我们可以形象地把主界面称为EJB对象的工厂。

企业bean类企业bean类是业务逻辑的具体实现类。用户可以调用的方法在远程接口中定义。根据功能的不同,EJB 2.0规范定义了三种企业bean:会话bean(实体bean)bean(消息驱动bean。

会话Beans可以分为无状态和有状态。通常,无状态会话Beans模拟业务逻辑,例如计算价格。有状态会话bean通常模拟一个客户会话,临时保存客户信息,并根据客户需求调用其他bean访问数据。这两种会话bean都不保存状态信息或数据,当客户端断开连接或服务器关闭时,会话bean就会消失。会话Beans的一个典型例子是网站上的购物车。

实体Beans模拟业务数据,表示数据存储,可以是状态信息或数据库中的记录。实体Beans仍然有一个服务来确保在客户断开连接或服务器关闭后保存其数据。实体Beans的一个典型例子是客户帐户信息。

消息驱动bean的行为很像对话bean。不同之处在于,消息驱动bean仅在需要向这些bean发送消息时才被调用,比如在需要时发送用户确认信息。

此外,在提交和部署EJB组件时,需要两个文件:部署描述文件,容器根据该文件部署企业Beans以提供所需的服务;EJB jar文件,这是一个提交给EJB容器的部署单元。容器(应用服务器)在部署过程中将其解包,并加载到企业Beans中。

EJB容器非常复杂,通常由专业的J2EE应用服务器开发人员提供。更受欢迎的EJB容器由IBM的WebShpere、BEA的WebLogic Server、Sun的iPlant和其他应用服务器提供。EJB容器不仅为EJB提供事务处理、目录服务、持久性管理和安全服务,还负责EJB的部署、发布和生命周期管理。

平台标准服务

服务是组件和容器之间以及容器和J2EE服务器之间的接口。在实现层面上,它是一系列的API和协议。J2EE平台定义了一组标准服务,其中一些由J2SE提供,而另一些则是J2EE对Java的扩展。

目录服务JNDI(Java名称和目录)API为应用程序完成标准目录操作提供了一个统一的接口。因为JNDI独立于目录协议,所以应用程序可以使用它来访问各种目录服务,如LDAP、NDS、DNS等。

数据访问JDBC (Java Database Connectivity,Java数据库连接)API提供了访问不同类型数据库的统一方式,屏蔽了不同数据库的细节,并且是平台无关的。J2EE平台不仅需要核心的JDBC API(包含在J2SE中),还需要扩展的JDBC API 2.0,它支持行集、连接池和分布式事务处理。

JTA(Java Transaction Architecture)定义了一组标准接口,为应用系统提供可靠的事务支持。JTS(Java事务服务)是CORBA OTS事务监控的Java实现。JTS规定了事务管理器的实现方式,在高层支持JTA标准,在低层实现OMG OTS规范的Java映射。

消息服务JMS(Java消息服务)是一组用于与面向消息的中间件通信的API。

它支持点对点消息通信和发布/订阅消息通信。电子邮件JavaMail API允许在应用程序中以独立于平台和协议的方式发送和接收电子邮件。JAF(JavaBean s Activation Framework)负责处理MIME编码,JavaMail使用JAF处理MIME编码的邮件附件。

CORBA兼容接口RMI(远程方法调用)是一个Java本地方法,它在分布式对象之间进行通信。它使应用程序像调用本地方法一样调用远程方法,而不管被调用对象的位置。RMI-IIOP是RMI的扩展,RMI是符合CORBA标准的对象通信协议,也是J2EE的默认组件通信协议。Java IDL允许J2EE应用程序组件通过IIOP协议访问外部CORBA对象。

安全服务JAAS(Java authentic ation and authorization service)采用两步实现安全:认证,即用户提供认证信息(如用户名和密码)获得系统认证,也称为登录;授权:确认为合法用户后,系统根据用户的角色授予用户相应的权限。J2EE的授权基于安全角色的概念,安全角色是具有相同权限的逻辑组。J2EE的安全角色由应用程序组件提供者定义。

Web服务支持目前,J2EE不提供对Web服务的支持。Sun提供了一套API及其实现WSDP作为J2EE的扩展,但目前还不是J2EE规范的内容。在WSDP,JAXP用于解析XML文档;JAXR注册Web服务;用UDDI服务器;JTX/RPC使用基于XML的协议(如SOAP)来发送和接收XML文档;JWSDL处理WSDL文档。尽管J2EE不是为网络服务而生的,但它现在正在努力追赶网络服务。

多层应用模型

从应用的角度来看,J2EE为企业应用系统的开发提供了多层分布式企业应用模型。在J2EE中,应用逻辑可以按照不同的功能分为不同类型的组件,每个组件按照其层次分布在不同的机器上,共同构成一个基于组件的分布式系统。

J2EE定义了一个典型的四层结构,即客户层、Web层、业务逻辑层和企业信息系统层。

在应用开发中,可以根据实际情况灵活使用J2EE定义的四层模型。因为除了Applet之外的所有组件都可以访问数据库、EJB组件和企业信息系统,所以通过不同层的选择和组合可以衍生出很多应用软件开发模型,比如基于Web的四层模型、基于桌面应用的三层模型(不包括Web层)、B2B模型(不包括客户端层)等等。如果应用系统比较简单,一般不使用EJB作为逻辑层,而是直接使用Web组件来实现业务逻辑和数据访问。毕竟,EJB的开发和部署成本仍然很高。

其次。NET开发平台留住Windows开发者

南京邮电大学李建中

一旦。NET开发平台推出后,它开始与J2EE平台竞争。其中大部分是对微软Windows DNA(分布式网络架构)的重写,后者曾是微软开发企业应用的平台。Windows DNA包括许多成熟的技术,这些技术被新的。NET框架,它包括Web服务层和改进的语言支持。从战略的角度来看。NET开发平台肩负着集成。NET战略,但其最直接的目标是试图为微软保留庞大的Windows用户群。

微软的Windows开发用户群是微软通过Windows操作系统最大的财富。关于为什么?NET开发平台推出,微软表示,主要原因之一是Java向开发者承诺硬件和操作系统无关,这可能会导致这些用户转向其他平台。虽然开发平台本身不会给微软带来多少收益,但Windows程序员是企业内部对微软产品的主要支持力量,商业软件的开发者形成了向客户销售微软产品的重要渠道。如果微软能让开发者在。NET开发平台,那么会有更多的公司购买微软的其他产品。

知道。网

了解的最好方法。NET就是看它是干什么的。的。NET strategy以互联网本身作为构建新一代操作系统的基础,合理延伸互联网和操作系统的设计思路,使开发者可以创建独立于设备的应用,从而轻松实现互联网连接。。NET包含了广泛的产品,这些产品基于XML和互联网行业标准,为用户提供Web服务的开发、管理、应用和体验。图1是对的总体描述。NET策略。构成的五个方面。网络策略包括:

。NET开发平台这是一组用于构建Web服务应用程序和Windows桌面应用程序的软件组件,包括。NET框架,。NET开发工具和ASP.NET。Visual Studio。NET将是RAD开发工具中的重要产品。

的。NET server可以提供Web服务的广泛聚合和集成,是构建。NET平台。密码认证、日历、文件存储和用户信息等基本服务必不可少。基础服务平台,如。微软正在努力打造的. NET My Services就是这方面可以借鉴的例子。

。网络终端设备。广泛接入互联网、体验Web服务的终端设备是实现的前端基础。网。PC、PDA和各种嵌入式设备将在这个广阔的世界中发挥作用。

的用户体验。NET的终极目标是能够满足人们的各种需求。NET及其价值的实现。

在这五个组件中。中的. net framework。NET开发平台是构建。NET软件,其他四个部分是围绕。NET框架。

NET框架内核

的。NET框架实现了语言开发、代码编译、组件配置、程序运行和对象交互的功能,为Web服务和常见的应用程序提供了一个托管的、安全的、高效的执行环境。上创建的所有应用程序。NET平台需要两个核心模块:公共语言运行库(CLR)和。NET框架类库。CLR是一个软件引擎,用来加载应用程序,确认可以无错运行,验证相应的安全权限,执行应用程序,然后被清除。

的。NET Framework类库为程序员提供了在CLR控制下编写代码运行的软件组件。它们根据单一有序的层次结构提供了一组庞大的功能,包括从文件系统到网络访问到XML功能的所有内容。该类库提供了三种基本的开发编程模板:基于ASP.NET的Web窗体应用、基于ASP.NET的Web服务应用和基于传统GUI交互的Windows应用。

clr-的虚拟机。网

CLR为提供托管代码执行环境。NET应用程序。托管就是将原本由程序员或操作系统完成的工作剥离出来,交给CLR来完成,从而使程序运行具有更高的安全性和稳定性。这些任务包括内存管理、实时编译、组件自描述、安全管理和代码验证以及其他系统服务。CLR提供了一个技术规范。不管程序是用什么语言写的,只要能编译成中间语言,就能在其支持下运行,这样一来。NET应用程序可以独立于语言。CLR还为应用程序运行环境中基于组件的编程提供直接支持,例如,它支持属性、事件、对象、继承、多态和接口等组件编程特性。

时,CLR中的自动垃圾回收器负责内存分配、对象布局和内存释放等内存管理问题。NET应用程序正在运行,彻底解决了困扰程序员多年的内存泄漏问题,大大增强了应用程序的健壮性。

实时编译器在运行时以被调用的对象方法为单位,动态地将中间语言编译成本地二进制代码。

中间语言是编译器在。NET平台,它为。NET平台,允许开发者使用20多种不同的编程语言。元数据是嵌入在PE文件中的表的集合,它描述了代码中的数据类型以及CLR在执行代码时需要知道的其他信息。元数据使。NET应用程序代码自描述,并提供类型安全性,这在以前需要额外的类型库或接口定义语言(IDL)。

CLR根据被管理组件的来源(如互联网、企业局域网、本地机)确定各个组件的信任度,并根据信任度限制它们执行读取文件、修改注册表等敏感操作的权限。此外,CLR在通用类型系统的帮助下严格检查代码类型,这可以避免不同组件之间可能的类型不匹配。通过代码访问安全机制,开发人员可以为应用程序指定完成工作所需的权限。CLR不仅提供代码访问安全性,还提供基于角色的安全性。基于角色的认证为分布式组件在互联网上的执行提供了安全保证。

值得指出的是,CLR通常托管在其他高性能服务器的应用程序中,如Internet Information Server (IIS)和SQL Server数据库服务器。这样,开发人员就可以充分利用CLR的安全、高效等诸多优势,来部署自己的业务逻辑。

类库——组件和服务之家

的。NET Framework类库由一组广泛的、面向对象的和可重用的类组成,开发人员可以使用任何编程语言来使用这些类。它提供了几乎所有应用程序都需要的公共代码;在此之上,还有许多应用程序模板,它们为网站和web服务的开发提供特定的高级组件和服务,无论是传统的命令行程序还是Windows图形界面程序,还是用于下一代互联网分布式计算平台的ASP.NET或Web服务应用程序。与Windows及其SDK中发送的代码库一样。NET framework类库将程序员从繁重的编程细节中解放出来,专注于程序的业务逻辑。它将核心Win32 API最常用的函数和插件SDK的函数封装到一个统一的包中,并对类库进行了清晰有序的分组和描述,使开发者可以更方便地找到自己应用所需的大部分函数。以下是它提供的一些核心服务:

系统框架服务

服务框架包括一组开发者希望存在于标准语言库中的基础类库,如集合、输入/输出、字符串、数据等基础类。基础类库还提供了访问操作系统服务的类,比如图片、网络、线程、加密等等。此外,服务框架还包括数据访问类库和开发工具。

ADO.NET组件

ADO.NET为基于web的可扩展应用程序和服务提供数据访问服务。它不仅支持基于链接指针样式的传统数据访问,还为更适合向客户端应用程序返回数据的非链接数据模板提供高性能访问支持。

XML数据组件

通过它,开发者可以对任何XML格式的数据进行转换、传输和确认,所有的数据都可以视为XML格式。同时,系统还支持ADO.NET数据和XML数据之间的通用转换。

Windows窗体组件

Windows窗体组件为开发人员提供了强大的Windows应用程序模型和丰富的Windows用户界面,包括传统的ActiveX控件和Windows XP的新界面,如透明和分层的浮动窗口。对CLR的强支持也是Windows窗体组件令人兴奋的地方之一。

ASP.NET应用服务

ASP.NET的核心是其基于底层结构处理HTTP请求的高性能运行语言,其编译运行模式极大地提高了其性能。ASP.NET使用基于组件的。NET框架来配置模板,从而获得了XCOPY配置、组件并行配置和基于XML的配置等优势。它还支持应用程序的实时更新,并提供缓存服务来提高性能。

ASP.NET web表单

ASP.NET Web窗体为Web应用程序的开发带来了VB窗体的高效率。ASP.NET网页支持将HTML内容与脚本代码混合的传统ASP语法,但它提出了一种将应用程序代码与用户界面内容分离的更结构化的方法。它提供了一组映射传统HTML用户界面组件(包括列表框、文本框和按钮)的ASP.NET Web表单控件,以及一组更复杂的Web应用程序控件(如日历和广告转盘)。

之间本质区别的最精辟的评论。NET和Java。

Java是一种平台无关的语言,#e.O?e

NET是一个独立于语言的平台。U 1[

lTuVLQ*e

告诉你有一份报告?39aW4%g

Java有如下三角形:6 _ x @ $ ivd。

java sBrpJc

unix linux windows...KxUv 5x美元

c c++ java vb C#...vtCd6cl=c

哪个是@})?生长激素

Oracle两者都没有,但它有一个数据库平台和sap,这两者都没有。甲骨文的终极幻想是将这两个三角形组合成一个长方形。Ri/?Y6r63

个人观点:不过,从语言和sun、ms的基础语言库来说,java已经不是可以比的了。网(以前是。net学java,现在学的是java。网)。java剩下的就是过去十年积累的经验(iHa)XtI。

~+H)"e

因为M$有自己的数据库系统软件,甲骨文的这种最终幻想可能会持续很长一段时间,是否有尽头还很难说。uAYFZ{%C$

而且M$的产品线互补性很难撼动。Visual Studio,Windows,Office,Sql Server好吓人啊@ _ @。z * 6:;nzn

7$%'URFP]

Net是一个平台垄断i }$soCE

Java是语言垄断nV%#lMQ G

2!myNh:zM

似乎C++之父给出了一个断言,JVM本身就是一个平台。f950x3++L

SUN或M$就是将开发者绑定到他们自己的平台上。6H.2hW & amp调频

但是,不考虑技术的本质,考虑当前的市场现象,这个结论可以成立为0q >;wxi`i

,3XmL

。net基本够看一本书,而Java要看很多书可能不行=#+0HLGCFA。

` # >;。问,V

。net就像品牌机,什么都是M$预装的,但是整体性能总是那么差强人意。JAVA比较容易DIY,DIY需要多看书。当然,这是一种取舍。

SD时代的一篇文章叫Java VS .NET?在文章中,作者提出了自己的观点。在企业的应用中,Java不会对抗。NET直接,但更有可能合作。Java和。NET有自己的特点和优势:

1.在智能客户端领域。NET绝对占优。

2.Java在大规模、跨平台的集成服务器领域具有明显的优势。

3.说到开发工具的功能和易用性。NET是第一个。

4.在安全性方面,基于Linux和Unit的Java比。NET基于Wnidows。

还提到虽然上面的比较是目前的现实,但是Java和。NET都在不断发展,它们之间的差距还在缩小。两大阵营都在互相学习,弥补自己的不足,最终两个产品会越来越相似。

。NET将开发工具的易用性发挥到了极致。而微软走的是傻瓜式工具的路线,被很多优秀的程序员所不屑。但是,傻瓜式工具的特性会带来生产力的突破。可以预见,在一些小企业中,更多的将转向。NET解决方案。尤其是现在用VB,PB,Delphi的企业。

开源社区给了Java很大的帮助,Java的魅力很大一部分也是通过各种优秀的开源项目体现出来的。可能会有一些企业不在乎开源,但这种态度其实是有问题的。开发源代码的价值在于它提供了一个生态环境:企业可以借助开源项目高起点发展,然后在盈利的同时回归开源项目。在人的问题上,开源软件培养了大量优秀的程序员。这些程序员不是靠一个公司提供的愚蠢工具,而是靠自己和集体智慧来提高劳动生产率。这种开发模式与。网络路由。所以有很多关于Java下软件管理和软件建模的研究,但是。网差多了。

值得称赞的是,微软做了一件非常聪明的事情——向ECMA组织提交了CLR规范和C#规范,从而实现了底层框架的标准化。NET,这使得一些程序员开始将一些优秀的开源项目转移到。网。随着Mono项目的发展。NET真正实现了跨平台的目标。就这样,。NET已经正式涉足单位环境。但是微软还有很长的路要走。