大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
使用java读卡例程,附件是YW-607读卡器的SDK,里面有java读写卡的例程读卡器SDK
创新互联公司是一家专业从事网站制作、网站建设的网络公司。作为专业网站设计公司,创新互联公司依托的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、全网整合营销推广及网站设计开发服务!
随着Internet网络的迅速发展,基于互联网的企业应用要求软件平台具有开放性、分布性和平台无关性。于是就相继出现了RPC/COM/CORBA等技术,但这些技术在实际应用中存在着许多不足和局限。它们的特定协议难以通过防火墙,因而不适于Web上的应用开发。为了进一步开发基于Web的应用,出现了Sun公司的Sun ONE(Open Net Environment 开发网络环境)和Microsoft公司的.NET等Web 服务技术体系。
Sun ONE体系结构以Java语言为核心,包括J2SE/J2EE/J2ME和一系列的标准、技术及协议。它包括Sun独有的iPlanet软件系列,其中有在市场上受欢迎的LDAP目录服务器软件,以及Forte for Java——便于在任何环境下书写Java 语言的软件工具。我们很容易就能从网上免费获得和使用包括Java 集成开发环境、Java数据库和中间件(Application Server)服务器等产品,以及它们的源代码。Sun ONE更接近或能满足互联网在智能化Web服务方面对分布性、开发性和平台无关性的要求。
随着Java技术的不断发展,它根据市场进一步细分为:针对企业网应用的J2EE(Java 2 Enterprise Edition)、针对普通PC应用的J2SE(Java 2 Standard Edition)和针对嵌入式设备及消费类电器的J2ME(Java 2 Micro Edition)三个版本。本文就Sun ONE的Java核心应用——J2SE/J2EE/J2ME作一些介绍。
J2EE技术应用
J2EE是Sun公司推出的一种全新概念的模型,比传统的互联网应用程序模型更有优势。
J2EE模型
J2EE的应用编程模型(J2EE Blueprints)提供了一种用于实施基于J2EE多层应用的文档和实例套件的体系模型,简化了这项复杂的工作。它被开发人员用作设计和优化组件,以便开发人员从策略上对开发工作进行分工。
J2EE应用编程模型要求开发者将自己的工作分成两类:商业逻辑和表示逻辑,其余则由系统资源自动处理,不必为中间层管道进行编码。这样,开发人员就能将更多的时间花在商业逻辑和表示逻辑上。对重视缩短项目周期的公司来说,这种转变深受欢迎。
J2EE平台
J2EE平台是运行J2EE应用的标准环境,由J2EE部署规范(一套所有J2EE平台产品都必须支持的标准)、IETF标准集和CORBA标准组成。最新的J2EE平台还添加了JavaBean组件模型。开发人员可以利用JavaBean组件模型来自定义Java类实例,并可通过已定义的事件访问Java类。
J2EE支持EJB,因此开发人员可以执行多用户交易功能。当在J2EE服务器上运行时,Enterprise JavaBeans将应用逻辑分成可再利用和可扩展的代码段。Enterprise JavaBeans并不是新特征,但是通过定义标准客户端和服务API,J2EE增强了它的能力和可移植性。
EJB在服务器的一个容器内运行,提供所有典型的中间层服务,如事务管理、安全、远程客户连接、生存周期管理和数据库连接缓冲。为了让事务系统在存在EJB容器的情况下运行,开发人员只需在部署描述文件中定义Beans的事务属性即可。
J2EE通过定义一组标准的结构来实现它的优势,例如:
1.J2EE Application Programming Model,是一种用于开发多层次、瘦型客户用户程序的标准设计模型;
2. J2EE Platform,是一个标准的平台,用来整合J2EE的应用程序,并指定一系列的接口和方法;
3. J2EE Compatibility Test Suite,是一套兼容测试组件,用来检测产品是否同J2EE平台兼容;
4.J2EE Reference Implementation,用来示范J2EE的能力。
J2EE服务器
Sun的J2EE服务器通过Java 命名和目录接口(JNDI)、认证、HTTP及与Enterprise JavaBeans兼容的能力,提供命名和目录服务。JNDI是Java平台的一种标准扩展版,向企业内的命名和目录服务提供具有Java功能的,带有统一接口的应用,包括LDAP。
J2EE服务器还利用了Java Servlet技术。Java Servlet可以看作是运行在服务器上的一个小程序,它向开发人员提供以组件为基础创建基于Web应用的、独立于平台的方法。它不像利用CGI那样具有性能局限。Java Servlet是一种扩展Web服务器功能的简单技巧。由于它是用Java编写的,因而能够访问整个Java API库,也包括用于访问企业数据库的JDBC API。
JSP是Java Servlet的一种扩展。Java Servlet提供开发和显示来自服务器的交互式Web页。如今JSP又有了进一步的改进,它使得创建和支持静态模板和动态内容相结合的HTML和XML页面更加容易。
安全性
J2EE平台定义了一种标准的公开存取控制规则,当程序在企业平台上开发时就已被程序师定义和解释了。J2EE也需要提供一个标准的注册机制,以便应用程序不会将这些注册机制和逻辑相混合,从而使相同的工作执行于大量的不同环境中时并不需要改变源代码。例如:J2EE应用程序开发人员可以指定几个安全级别,当用户访问数据时,他们可写出代码来检查当前用户权限的级别。在开发阶段,开发人员赋予多组用户适当的安全级,使应用程序在执行限制操作之前能够容易的判断限制级。
J2EE 平台是Java技术企业级应用的最佳平台,它可以让程序员迅速、快捷地开发和分布企业级应应用程序。以下便是它的相关技术:
1.Enterprise JavaBeans Architecture,企业级JavaBeans 定义了一个应用程序接口。它可以使程序员迅速开发、发布和管理跨平台的、基于组件的企业级应用程序。
2.JavaServer Pages,JSP 技术提供了一种简单、快速的方法来创建动态网页。通过它,可以快速地开发基于Web的应用程序,并且这些应用程序都是与平台无关的。因为JSP与ASP很相似,所以熟悉ASP的人学习它就很容易了。
3.Java Servlet,提供了应用程序接口。通过它可以简单快速地开发并扩展服务器功能。就发展趋势来看,它将来有可能取代CGI。
4.J2EE Connector,提供了一种标准结构来联接不同的企业信息平台。
5.Java Naming and Directory Interface(JNDI),在Java 平台与商业信息之间,JNDI提供了统一、无缝的标准化连接。通过使用JNDI,程序员可以在企业多命名与目录服务之间传送Java 应用程序。
6.Java Interface Definition Language(JIDL),通过使用CORBA,可以提供协同工作的能力。JIDL包括一个IDL-to-Java 编译器和支持IIOP(Internet Inter-Orb Protocol)的ORB。
7.JDBC,几乎是为所有的数据库提供了统一的接口,同时可以创建高级工具和接口。
8.Java Message Service(JMS),它几乎规范了所有企业级消息服务,如可靠查询、发布消息、订阅杂志等各种各样的PUSS/PULL技术的应用,并且为它们提供了一个标准接口。
9.Java Transaction API(JTA),为分布式系统中可处理的应用程序规定了一个高级的管理规范。
10.JavaMail,JavaMail应用程序接口提供了一整套模拟邮件系统的抽象类。通过JavaMail,可以创建邮件或消息应用程序。
11.RMI-IIOP,使用它就可以只用Java 技术和Java RMI接口开发客户机与服务器的远程接口。
J2EE使用固定的文件格式捆绑某个模块:用.ear文件捆绑J2EE应用程序;用.jar捆绑Enterprise Bean。例如,一个.ear文件包含一个.xml文件作为其分布描述,还包含一个或多个.jar和.war文件;一个.jar文件除了包含它的分布描述外,还包含了作为Enterprise bean的.class文件。
J2EE应用程序的开发阶段分为四步:1.Enterprise Bean创建;2.Web Component创建;3.J2EE应用程序装配;4.J2EE应用程序分布。以下是J2EE兼容产品部分列表:
BEA WebLogic Server 6.0、Borland App Server、HP Bluestone Total-e-Server、IBM WebSphere Application Server、IONA iPortal Application Server、iPlanet Application Server、Macromedia JRun Server、Oracle 9i Application Server、SilverStrean Application Server、Sybase EAServer、TogetherSoft ControlCenter、Java 2 SDK Enterprise Edition。
J2ME技术的应用
J2ME(Java 2 Platform Micro Edition)是为无线电子市场所设计的,包括JVM规范和API规范。其API规范是基于J2SE(Java 2 Standard Editon)的。J2ME 定义了一套合适的类库和虚拟机技术。这些技术可以使用户、服务提供商和设备制造商通过物理(有线)连接或无线连接,按照需要随时使用丰富的应用程序。
J2ME又被称为Java 2 微型版,被使用在各种各样的消费电子产品上,例如智能卡、手机、PDA、电视机顶盒等方面。当然了,J2ME也提供了Java语言一贯的特性,那就是跨平台和安全网络传输。它使用了一系列更小的包,而且Javax.microedition.io 为J2SE包的子集。J2ME可以升级到J2SE和J2EE。
在J2ME出现之前,我们更多接触到的是Java卡(Java Card)、嵌入式Java(Embedded Java)和实时Java(Real Time Java)等。其中Java卡是针对SIM卡、智能卡等设备而定制的最小Java子集,比J2ME还要小,移植性也不强。嵌入式Java则针对特殊用户自行配置Java类库和VM(Virtual Machine,虚拟机)。它对资源需求极小,可运行在无图形用户接口和网络的设备上,可以添加用户专用的API,但是它就无法移植。实时Java是由IBM领导的实时定制Java专家组负责实施的,现在还在不断完善中。不过,从严格意义上来说,它们都不是真正的J2ME。
像其它版本一样,J2ME具有很多Java技术特性,主要有:
1.可以在各种支持Java的设备上运行;
2.代码短小;
3.充分利用Java语言的优势;
4.安全性好;
5.用J2ME实现的应用可以方便地升级到J2SE、J2EE。
J2ME的配置和框架
为了支持用户和嵌入式市场提出的灵活性和可定制性要求,J2ME被设计得更加模块化和可缩放化。J2ME在设备原有的操作系统上建造了3层软件来实现这种要求:
1.JVM层,这层基于宿主操作系统,按照某一种J2ME的配置,实现了JVM。
2.配置层,这层对于用户可见度要低一些,但对框架层非常重要。它针对“水平”市场的需求,定义了Java虚拟机的最小功能集和Java类库的最小集合。在某种意义上,配置层定义了开发者在所有设备上都可以使用Java特性和类库的“最小公分母”。
3.框架层,这层对于用户和应用程序提供者来说是最常见的。它针对“垂直”市场的需求,定义了Java虚拟
至于XML,只是的JAVA中很多配置文件都用XML
为什么这么多人选择Java语言呢?
首先得利与Java语言自身的优越性,Java语言具有面向对象、跨平台、安全性、多线程等特点,这使得Java成为许多应用系统的理想开发语言。
Java的人才缺口最大,据数据统计,得知Java软件工程师的职位需求量一天可达三万个。
用途如此之广的Java造就了Java工程师的辉煌,使其在软件工程师的领域里独占鳌头。Java软件工程师运用Java这个开发工具去完成产品的程序设计、开发、测试、维护升级等工作。
在工作中Java应用范围广泛,从桌面办公应用到网络数据库等应用,从PC到嵌入式移动平台、从Java小应用程序到架构庞大的J2EE企业级解决方案,处处都有Java的身影。就连美国大型太空项目当中,也使用了Java来开发控制系统和相关软件。
现如今Java已在众多编程语言中排名第二,这也反映了Java在工作中的重要性。
伴随着Java的火热,Java主要应用在B/S和C/S领域。由于科技的不断发展,B/S将不足以满足社会需求,C/S将会是社会发展趋势。随着Servlet技术的使用,Java向Web移动设备方向挺进。
那么,现实领域中是如何运用Java的呢?
1、Android应用
随着Android的出现,到现如今Android手机中APP的应用都是Java语言开发,虽然它们运用不同的JVM和封装方式,但代码用的还是Java编程。
2、服务器端开发应用
Java几乎被用在服务器端开发,多数没有前端开发的通常是从一个服务器接收数据,处理后发给另一个处理系统。如今,Java编程已经在金融服务业得到广泛应用,所有银行平台的前台和后台电子交易系统、确认和结算服务、数据处理及其他项目都用Java来编写。
3、网站
Java在电子商务和网站开发领域备受青睐,运用不同的框架创建web项目、SpringMVC、Struts2.0 以及frameworks,这也使得它在不同部门网站的开发中都以Java为基础。
4、第三方交易系统
大多数的金融服务业都使用第三方交易系统,而Java在此业务中起到桥梁的作用,它可以与许多银行前台产生链接,并为大家提供服务。
5、软件工具
许多常用软件的开发都是运用Java语言编写和开发的,例如:Eclipse、IneteliJIdea等。
6、嵌入式领域
而今Java在嵌入式领域发展空间很大,在智能卡或者传感器上,你只需130KB就能够使用 Java 技术。
7、J2ME系统
近年大多数手机游戏都采用J2ME 的一部分 MIDP 和 CLDC 编写,以适应 Android系统。不过J2ME在蓝光、磁卡、机顶盒这些产品中依旧流行。
8、大数据技术
就目前来说,Hadoop及其他大数据处理都用Java语言,但是Java在此领域并未占太大空间,如 MongoDB 就是在 C++技术基础上编写的。总的来说,只要 Hadoop 和 ElasticSearchas 能够成长壮大,Java 依旧还有潜力去在这个市场占据一部分。
简言之,Java环境可用来开发能在任何计算平台上运行的应用
软件。它实际上是一种非常基本且结构紧凑的技术,而它对World
Wide Web以及商业的总体影响已可同电子表格对PC机的影响相比
拟。
Java是巨大的推动力量
Java已用动态的交互应用软件使Web栩栩如生。它使开发人员
具有‘编写一次到处运行TM”的巨大能力。而且,借助其JavaAPI
及其编程语言上的Java虚拟机,它已产生一种分布信息的崭新模式。
这种模式叫做Java企业计算,正在帮助各企业以各种不同的方法取
得竞争优势。网管和控制已大大简化。软件分配基本上是免费的,
而且立即可实现。电子贸易已获得。占有成本大幅度降低。信息和
应用软件到处可存取。
Java建立在简单的前提基础上,即所有微处理器都应讲同一种
语言??所有内部采用芯片的产品都应能一起工作,无缝而方便地
共享信息。它已经改变企业和个人同Internet大交道的方式。现在,
它正在对消费类产品产生明显的影响,而且从总体上更加深刻地影
响企业计算。
借助Java,您可自由自在地使用您已拥有的硬件和软件。这是因
为Java是独立于平台的。它还可使您超越企业计算,使应用软件在便
携式计算机、信息亭、电视、蜂窝电话和其他大量设备上运行。
全世界的公司都已发现Java数不胜数的用途。所有用途可从其无
可比拟的能力,即提高可靠性、安全性和简化各种不同计算产品和
环境的能力中受益非浅,而且节省的时间和费用十分可观。
Java无处不在。它已拥有几百万个用户,其发展速度要快于在它
以前的其他任何一种计算机产品。它可位于任何地方,而且能到处运
行。Java正在迅速被用做传播信息的事实上标准,这是因为它既可给
企业,也可给最终用户带来似乎数不清的好处。
因此,请您仔细考察一下Java。它的优点是很容易发现的。
“Java正在进入企业、家庭和学校。
它正在象Internet本身一样成为普遍存在的技术。”
Oracle 公司董事长和首席执行官
Larru Ellison
“Java正在改变我们使用Internet的方法,改变我们
在公司内部存取信息的方法,甚至改变我们使用蜂窝
电话的方法。它正在从根本上改变制作信息、销售信息
和分配信息的方法。”
EarthWeb公司董事长和首席执行官
Jack Hidary
Java的来龙去脉
Sun公司一小组工程师聚集在一起,认真思考日常生活中的
数字系统??因为烤面包机、恒温器、游戏机和其他无数设备
都包含越来越复杂的CPU??以及他们如何能使这些数字系统
共享信息。
创造未来的计算
制造产品的人当然全都从不同的方面来考虑其设计,视他们
所使用的硬件平台、操作系统和应用软件而定。但是,如果您要
使这些产品中的一些产品一起工作,那怎么办?安全性、可靠性
和网络问题又这么样呢?
因此,Sun公司这些工程师把各种不同的产品折开来,然后又
把它们重新组装起来,其目标是要使这些不同的设备相互交谈。
他们把这些研究对象相互传来传去,并理解所有其他研究对象的
特性,以便使他们能更好地一起工作。这就把制造商的问题缩减
到最低程度,并使消费者能方便地进行集成。当传统的语言证明
是不适用时,工程师们就打算找到某种简单的现代新语言。于
是, Java应运而生。
人们很快发现,Java有可能超越工程师的想象。Java的魅力在
于它提供给开发人员和用户的简便性。开发人员拥有广大的用户基
础、平台独立性、降低的开发费用和始终如一的执行环境,而用户
则可 从生动的内容、即时软件和增大的安全性中受益。
但是,Java正是从置于World Wide Web那时起才真正起飞。Java
使全世界大为震动,因为它使Web页面栩栩如生,而且不久变得很明
显,Java拥有大得多的潜力。人们之所以采纳Java,是因为它有独特
的能力来编制和部署能在任何一个网络、任何一个操作系统上运行的
应用软件。分配软件的时间和费用实际上已不复存在,使得各公司可
把更多的资源用来开发其产品。而且,某些工业专家认为,Java可能
会改变软件销售模式,从固定价格改变为按使用量收费,这样做更有
利可图,而且可阻止非法盗版。
Java是一种网络计算的通用开放标准平台。这种平台可从电话一
直扩展到极端重要的应用,建立在您现有的硬件和软件体系结构基础
上,从而创造出一个全部联网的企业或者制造出超出的创新产品。
“由于Java具有可缩放性,因而我们可以把Java应用于小应
用软件或大应用软件,把它芯片组以及大型计算机和服务器,并
使它为各种不同的应用领域服务。”
三菱公司系统营销副总裁
Steve Hester
“借助Java,您可以用一种能最有效地使用的方式动态地分
发和分配交互式商务应用软件一一在需要运行应用软件的地方,
在需要运行应用软件的时候。”
Novell公司开发者服务部副总和总经理
Gary Mueller
Java扎下根来
在某种意义上,Java具体体现了Sun Microsystiems公司自其14年
前创建以来所追述的目标。当时,它创造了“网络就是计算机”这局名
言。它市基于Web的新网络计算模式的完美平台,因为它建立在各个
组织现有的硬件和软件体系结构基础上,能建立一个全部联网的企业。
Java是一个完整而全面的解决方案
Java远不止是一种编程语言,它是企业内外的完整计算环境,而
且万事齐备,从开发工具、操作系统、服务器软件和瘦/肥客户机一
直到网络管理工具、支持、培训、咨询和集成服务,一应俱全。Java
使用起来非常简单,部分原因是Sun提供一种全面统一的解决方案。
主要组成部分包括:
*Java开发工具和服务:有助于简化开发Java应用软件的产品和
服务
*JavaOS:一种结构紧凑的操作系统,可使Java应用软件在网络
计算机和蜂窝电话等设备上运行
*Java虚拟机:一层软件,嵌入Windows、Macintosh和UNIX等计
算机操作系统,或在这些操作系统上运行,从而使计算机能
运行Java应用软件
*Java API:标准软件界面,位于Java应用软件和数据库检索和
安全性等服务软件之间
*Java芯片:一系列为Java优化的为处理器
*Solstice WorkShop:Java启动的网络管理工具
*Java培训:一个由教师指导和基于多媒体的完整课程,教会编
程员如何开发Java应用软件,包括一个用来验证熟练程度的
认证计划
*JavaWorkShop支持:900号电话服务,可为Java WorkShop用户
(仅限美国用户)立即提供按需支持
这些产品依靠由Sun的核心技术和服务提供的基础,包括:
*Solaris操作系统
*Sikstuce企业管理系统
*WorkShop开发者工具
*SunSpectrum支持服务
*Internet咨询和集成服务
*Java和Internet教育服务
*ultra工作站和Ultra Enterprise服务器;Netra服务器
难怪大公司和日益增多的全球2000公司正在把Java计算用做系统以及
其终产品的主要方面。
“您不会把您自己锁住在任何一家公司的专有技术中。
开放意味着选择。而Java使您有选择余地。”
Java改变了什么
nbs
p; 十年前,几乎没有人想到,几个技术人员研发的一个“小语言”,会发展成如今的一个“生态圈”,这就是Java。
Java让互联网动了起来
“计算机语言的发展历史也是人们不断追求更高的模块化、抽象化和封装化的历史。近十年期间,很多编程语言,从出现到没落经过了一波又一波。像1970年代出现的Pascal,如今用的人已经不多了。”一位资深程序员告诉记者,“‘算法+数据结构=程序’几乎成为软件开发的惟一准则,结构化程序设计方法从计算机发展角度来看是自然而然的,但今天从抽象的角度来看,这种方法几乎可以说是一个‘时代错误’。实际上,软件开发的主要目的就是描述和反映现实世界,结构化程序设计方法并不符合这个思维方式。”
因此,抽象的过程应该是以现实世界的对象为中心的,于是面向对象的抽象方法就走到了前台,出现了Visual Basic、Delphi、C++以及Java等面向对象的编程语言,而互联网的勃兴,则给Java的成长带来了肥沃的土壤。
“Java诞生时并没有引起太多人的注意,它第一次让人们觉得惊艳是在一次网站演示上,但当时人们对Java还抱有很大的争议。”被誉为“Java之父”的SUN公司副总裁、软件部首席技术官James Gosling回忆起十几年前的情景不无感慨地说,“但Java的出现为当时的互联网增添了生机,它让那些静态的页面动了起来。”
而且,因为Java具有“只写一次,随处运行”的特点,从而引起了更多开发者的兴趣。
“我们可以不必再做重复性质的劳动了。”中国科学院软件研究所宋靖宇博士说,“此前,为了能够使程序在不同型号的硬件平台上运行,开发人员必须耗费大量的时间来一遍又一遍的编写代码,然而Java改变了这样的局面,只写一次就可以。”
由于看到Java在互联网时代的巨大作用,清华大学计算机系教授王克宏从1995年就开始跟踪Java的发展。
Java语言的优势似乎是与生俱来的,然而,仅有语言是不够的。
免费的Java创造了应用奇迹
“为了提高软件开发效率,任何编程语言都离不开相应的开发工具和程序库。”王克宏说。于是,SUN公司在1996年的1月23 日发布了JDK1.0,其中包括两个部分:运行环境和开发工具,运行环境包括五大部分:核心API、集成API、用户界面API、发布技术和Java虚拟机。
随着各种功能的完善与提炼,各种Java开发工具以及开发环境的丰富,Java不再是一种语言的代名词,它变成了一种开发平台。人们常常听到的J2EE(企业版)、J2ME(微型版)、J2SE(标准版)就是Java的三大核心平台。利用这三种不同的平台,人们可以来做不同行业的应用。
SUN公司大中华区总裁余宏德说:“Java经过十年的发展,已经得到了全球的公认,可以说,当今的电子时代是‘Java无处不在’,正是基于它一开始的技术公开性,Java已经变成全球最富有活力的技术社区之一。”
尽管,Java目前已经风靡全世界,但Java 到底给整个产业带来什么,除了Java程序员外,似乎没有人能具体感觉到。
SUN中国区市场经理马君海比喻说:“电灯的发明,使得有了现在庞大的电力产业;电话的发明,使得有了当今兴旺的电信产业;而Java的发明,则给软件产业带来了前所未有的改变。”
像一切新兴事物一样,Java的发展并不那么顺利,其坎坷起步的经历,可以从SUN首席执行官Scott McNealy在SUN的Java One大会上的一句话得知一二:“七八年前的Java One演说现在听起来真是寒碜,我们那时实在是太小看它了,我们根本不知道这项技术将会改变什么。”而且,由于开始就是基于开源的态度,当时很多人怀疑它是否能赚钱。
然而,今天的Java已经得到广泛应用。
据全球市场调查分析显示:已经有25亿部电子设备采用了Java技术,Java智能卡发行量已经达到10亿张,采用Java技术的手机达7亿多部,7亿台PC中应用了Java技术,140家电信运营商支持Java 技术,全球有超过450 万个Java开发人员,JCP(Java社区项目)已经有912家会员企业。
如果没有Java,SUN将会怎样
从1997年4月6日美国旧金山的第二届Java One大会,到今年的Java十周年盛事,本报目睹了Java 十年的风风雨雨,眼瞅着这个以“咖啡”命名的小小编程语言变成了一个平台,一个社团,一个生态系统。Java不仅发展了自己,也同时改变了它的缔造者。Java对SUN的改变是间接的、渐进式的,有时候甚至不为外人所道也。
与平台无关的Java旨在与“锁定用户的”Windows相抗衡,给人们更多的选择,但推动Java研发的却是家硬件公司――硬件公司与微软抗个什么衡?也许有人会拿IBM做类比――IBM也大量涉足软件。问题在于,IBM涉足软件的结果是把自己变成了一个软件和服务公司,而SUN的主业依然是服务器。表面上看,“纯软”的Java并没有给“偏硬”的SUN带来直接效益,反而树了个强大的敌人,这就是并不“软”的微软。
同时,尽管SUN对Java的投资巨大,却从没说过它从Java中获得过多少回报。因为使用Java程序和开发工具包是免费的,这让那些利用Java做第三方开发的ISV们赚了个钵满盆满,可是SUN得到了什么?当然,Java作为高级编程语言,它的注册和维护也能给SUN带来一定收入,但这是一个小头,有人比喻说:“SUN成了Java的管家,而不是主人。”
SUN大中华区市场总监李永起近日为记者揭开了Java与SUN的秘密:“如果SUN只是一个做服务器的公司,人们就不会对我们太感兴趣,但有了Java,就大不一样了,人们会跑过来与我们讨论Java,人们会说:‘哦,能研发出Java这么棒的编程语言的公司一定不同凡响!’况且,服务器的销售从来就不是孤立的,它体现为一个系统,Java在硬件销售中发挥了关键作用。”SUN用 Java来定位Web服务,发挥其多平台对话的特长,营造Web服务环境。
Internet让Java复活,Java则拯救了曾经陷入“偏硬”困境中的SUN。
SUN董事长麦克尼里认为:Java带来的益处从根本上讲是间接的。“但是,”他说,“想像一下,如果10年前SUN没有做Java,今天SUN将会在哪里?如果人们不写Java Web服务,他们会写.Net的程序,如果他们写.Net的程序,他们就不会为SUN的设备写程序。”
.NET不折不扣的对手
近年来,国内一批软件公司都采用Java技术开发了一批软件平台和产品,这两年Java在国内得到了迅速发展。不过,尽管看起来Java的队伍似乎很强大,但国内Java人才相对而言还是少得可怜。
“SUN在新加坡建立了Java高级培训中心,目前新加坡有5万名Java 人才,而新加坡全国只有380万人,即全国1.3%的是Java人才,如果按此比例,中国应有1700万名Java人才,而现在估计仅10到15万人。”王克宏教授在相关的报告中写道,“造成国内Java应用不多的原因是多方面的。”
“这两年SUN才开始在中国举办各种活动,而许多媒体对Java的不关注也是其中一个原因。”王克宏说。
“其实,鉴于Java出来时总给人阳春白雪的面孔,使得国内的许多编程者在熟悉了微软的开发平台后,很难转换过来是其中的一大部分原因。”宋靖宇博士说,“你不得不承认微软在开发工具上的人性化以及可视化设计是高超的。”
“在讨论 Java 的时候我们很容易将 Java 语言和 Java 平台混为一谈,与.NET 平台比较的过程中,也更多的是将Java平台和C#比较,或者将Java语言和.NET 平台做比较,在我个人的意识中,这是不够公正的。”上海大学博士刘锬对记者说,“Java既是一种语言,也是一种平台。”
说到微软的.NET,它从提出的开始就是立足平台,相对于 Java 提倡的“一次编写,到处运行”,.NET则提倡“一个平台,多种语言”,因为平台的统一性,因此在各个程序语言的兼容性和混合开发方面做得比Java 好,也因此有些微软的“粉丝”嘲笑Java是“一次编写,到处调试”。
“微软的C#是集合了C以及C++甚至Java的许多优点的结晶,在Windows平台上,似乎C#在运行速度上更胜一筹。”刘锬介绍说,“在任何一个平台上,我们直接交流的是实现Java语言运行的虚拟机,我们希望Java在虚拟机以及它的开发平台的研发上变得更易用、更人性化。”
“有对手总是一件不算坏的事情,这个世界不需要‘独孤求败’,商业规则也不允许‘独孤求败’的出现,因为那样会打破竞争格局的平衡,而Java和.NET这两个平台的纷争才刚刚开始。较量,有利于整个软件世界。SUN公司在商业模式的运作上甚至可以跟微软学习。”一网友这样说。
import java.util.Scanner;
public class PhoneCard {
private final int id; // 卡号
private final int password; //密码
private double cash; //剩余金额
private double cashPerMin = 0.2;// 每分钟收费
private Scanner sc = new Scanner(System.in);
public PhoneCard(int id,int password,double cash) {
this.id = id;
this.password = password;
this.cash = cash;
}
/**
* 拨号计费
* @param time 拨号时间 单位分钟
* 返回剩余金额
*/
public double callSomeone(double time) {
System.out.println("请输入卡号和密码,用空格隔开");
int id = sc.nextInt();
int pw = sc.nextInt();
if(this.id == id this.password == pw) {
this.cash = this.cash - (double)time * cashPerMin;
return cash;
} else {
System.out.println("密码错误");
return -1;
}
}
}
public class TestPhoneCard {
public static void main(String[] args) {
PhoneCard pc = new PhoneCard(1, 1, 100); //初始化,卡号,密码,余额
double money = pc.callSomeone(10); //拨打10分钟
System.out.println("余额为" + money + "元");
money = pc.callSomeone(90); //继续拨打
System.out.println("余额为" + money + "元");
}
}
不知道为什么没人做
import javax.swing.JOptionPane;
/**
*
* @author __USER__
*/
public class test extends javax.swing.JFrame {
/** Creates new form test */
public test() {
initComponents();
}
//GEN-BEGIN:initComponents
// editor-fold defaultstate="collapsed" desc="Generated Code"
private void initComponents() {
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jTextField3 = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jTextField4 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("\u5f00\u59cb\u6d4b\u8bd5");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jLabel1.setText("\u8bf7\u8f93\u5165\u6d4b\u8bd5\u6b21\u6570\uff1a");
jTextField2.setEditable(false);
jLabel2.setText("\u6362\u5361\u80dc\u5229\u6b21\u6570\uff1a");
jTextField3.setEditable(false);
jLabel3.setText("\u4e0d\u6362\u80dc\u5229\u6b21\u6570\uff1a");
jLabel4.setText("\u603b\u8017\u65f6\uff08\u79d2\uff09\uff1a");
jTextField4.setEditable(false);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout
.setHorizontalGroup(layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout
.createSequentialGroup()
.addGap(84, 84, 84)
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout
.createSequentialGroup()
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout
.createSequentialGroup()
.addComponent(
jLabel3)
.addGap(
26,
26,
26)
.addComponent(
jTextField3,
javax.swing.GroupLayout.DEFAULT_SIZE,
153,
Short.MAX_VALUE))
.addGroup(
layout
.createSequentialGroup()
.addComponent(
jLabel2)
.addGap(
26,
26,
26)
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(
jTextField4,
javax.swing.GroupLayout.PREFERRED_SIZE,
97,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jTextField2,
javax.swing.GroupLayout.DEFAULT_SIZE,
153,
Short.MAX_VALUE))))
.addGap(
119,
119,
119))
.addGroup(
layout
.createSequentialGroup()
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(
jLabel4)
.addComponent(
jLabel1))
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(
18,
18,
18)
.addComponent(
jButton1)
.addContainerGap()))));
layout
.setVerticalGroup(layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
javax.swing.GroupLayout.Alignment.TRAILING,
layout
.createSequentialGroup()
.addGap(52, 52, 52)
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(
jTextField4,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(28, 28, 28)
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE,
20,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jTextField2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(32, 32, 32)
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE,
20,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jTextField3,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED,
67, Short.MAX_VALUE)
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jLabel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
20,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
.addGap(76, 76, 76)));
pack();
}// /editor-fold
//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
long time = System.currentTimeMillis();
String number = jTextField1.getText();
if (number.matches("^[1-9]\\d*$")) {
long count1 = 0;
long count2 = 0;
int[] cards = ;
long times = Long.parseLong(number);
for (long i = 0L; i times; i++) {
int random = (int) (Math.random() * 3);
//表示第一次抽取的牌
int card1 = cards[random];
count1 += card1;
//表示第二次如果换牌之后的牌
int card2 = Math.abs(card1 - 1);
count2 += card2;
}
time = System.currentTimeMillis() - time;
jTextField2.setText("" + count2);
jTextField3.setText("" + count1);
jTextField4.setText("" + time/1000.0);
} else {
JOptionPane.showMessageDialog(null, "输入有误!");
}
}
/**
* @param args
* the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new test().setVisible(true);
}
});
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
// End of variables declaration//GEN-END:variables
}