使用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++技術基礎上編寫的??偟膩碚f,只要 Hadoop 和 ElasticSearchas 能夠成長壯大,Java 依舊還有潛力去在這個市場占據一部分。
簡言之,Java環境可用來開發能在任何計算平臺上運行的應用
軟件。它實際上是一種非?;厩医Y構緊湊的技術,而它對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的方法,改變我們
在公司內部存取信息的方法,甚至改變我們使用蜂窩
電話的方法。它正在從根本上改變制作信息、銷售信息
和分配信息的方法?!?/p>
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,如今用的人已經不多了?!币晃毁Y深程序員告訴記者,“‘算法+數據結構=程序’幾乎成為軟件開發的惟一準則,結構化程序設計方法從計算機發展角度來看是自然而然的,但今天從抽象的角度來看,這種方法幾乎可以說是一個‘時代錯誤’。實際上,軟件開發的主要目的就是描述和反映現實世界,結構化程序設計方法并不符合這個思維方式。”
因此,抽象的過程應該是以現實世界的對象為中心的,于是面向對象的抽象方法就走到了前臺,出現了Visual Basic、Delphi、C++以及Java等面向對象的編程語言,而互聯網的勃興,則給Java的成長帶來了肥沃的土壤。
“Java誕生時并沒有引起太多人的注意,它第一次讓人們覺得驚艷是在一次網站演示上,但當時人們對Java還抱有很大的爭議?!北蛔u為“Java之父”的SUN公司副總裁、軟件部首席技術官James Gosling回憶起十幾年前的情景不無感慨地說,“但Java的出現為當時的互聯網增添了生機,它讓那些靜態的頁面動了起來?!?/p>
而且,因為Java具有“只寫一次,隨處運行”的特點,從而引起了更多開發者的興趣。
“我們可以不必再做重復性質的勞動了?!敝袊茖W院軟件研究所宋靖宇博士說,“此前,為了能夠使程序在不同型號的硬件平臺上運行,開發人員必須耗費大量的時間來一遍又一遍的編寫代碼,然而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已經變成全球最富有活力的技術社區之一?!?/p>
盡管,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在硬件銷售中發揮了關鍵作用?!盨UN用 Java來定位Web服務,發揮其多平臺對話的特長,營造Web服務環境。
Internet讓Java復活,Java則拯救了曾經陷入“偏硬”困境中的SUN。
SUN董事長麥克尼里認為:Java帶來的益處從根本上講是間接的?!暗?,”他說,“想像一下,如果10年前SUN沒有做Java,今天SUN將會在哪里?如果人們不寫Java Web服務,他們會寫.Net的程序,如果他們寫.Net的程序,他們就不會為SUN的設備寫程序?!?/p>
.NET不折不扣的對手
近年來,國內一批軟件公司都采用Java技術開發了一批軟件平臺和產品,這兩年Java在國內得到了迅速發展。不過,盡管看起來Java的隊伍似乎很強大,但國內Java人才相對而言還是少得可憐。
“SUN在新加坡建立了Java高級培訓中心,目前新加坡有5萬名Java 人才,而新加坡全國只有380萬人,即全國1.3%的是Java人才,如果按此比例,中國應有1700萬名Java人才,而現在估計僅10到15萬人。”王克宏教授在相關的報告中寫道,“造成國內Java應用不多的原因是多方面的?!?/p>
“這兩年SUN才開始在中國舉辦各種活動,而許多媒體對Java的不關注也是其中一個原因?!蓖蹩撕暾f。
“其實,鑒于Java出來時總給人陽春白雪的面孔,使得國內的許多編程者在熟悉了微軟的開發平臺后,很難轉換過來是其中的一大部分原因?!彼尉赣畈┦空f,“你不得不承認微軟在開發工具上的人性化以及可視化設計是高超的?!?/p>
“在討論 Java 的時候我們很容易將 Java 語言和 Java 平臺混為一談,與.NET 平臺比較的過程中,也更多的是將Java平臺和C#比較,或者將Java語言和.NET 平臺做比較,在我個人的意識中,這是不夠公正的?!鄙虾4髮W博士劉錟對記者說,“Java既是一種語言,也是一種平臺?!?/p>
說到微軟的.NET,它從提出的開始就是立足平臺,相對于 Java 提倡的“一次編寫,到處運行”,.NET則提倡“一個平臺,多種語言”,因為平臺的統一性,因此在各個程序語言的兼容性和混合開發方面做得比Java 好,也因此有些微軟的“粉絲”嘲笑Java是“一次編寫,到處調試”。
“微軟的C#是集合了C以及C++甚至Java的許多優點的結晶,在Windows平臺上,似乎C#在運行速度上更勝一籌。”劉錟介紹說,“在任何一個平臺上,我們直接交流的是實現Java語言運行的虛擬機,我們希望Java在虛擬機以及它的開發平臺的研發上變得更易用、更人性化?!?/p>
“有對手總是一件不算壞的事情,這個世界不需要‘獨孤求敗’,商業規則也不允許‘獨孤求敗’的出現,因為那樣會打破競爭格局的平衡,而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
}
本文名稱:集成電子卡代碼java 集成電路卡識別碼在哪里
本文鏈接:http://vcdvsql.cn/article6/dosdiig.html
成都網站建設公司_創新互聯,為您提供Google、網站改版、用戶體驗、軟件開發、網站導航、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯