怎么用java连传奇的传奇3数据库怎么打开

追求卓越,成功就会在不经意间追上你!
JDBC连接数据库 &&
&创建一个以JDBC连接数据库的程序,包含7个步骤: &&
&1、加载JDBC驱动程序: &&
&&&&在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), &&
&&&&这通过java.lang.Class类的静态方法forName(String&&className)实现。 &&
&&&&例如: &&
&&&&try{ &&
&&&&//加载MySql的驱动类&&&
&&&&Class.forName("com.mysql.jdbc.Driver")&; &&
&&&&}catch(ClassNotFoundException&e){ &&
&&&&System.out.println("找不到驱动程序类&,加载驱动失败!"); &&
&&&&e.printStackTrace()&; &&
&&&成功加载后,会将Driver类的实例注册到DriverManager类中。 &&
&2、提供JDBC连接的URL &&
&&&&连接URL定义了连接数据库时的协议、子协议、数据源标识。 &&
&&&&&书写形式:协议:子协议:数据源标识 &&
&&&&协议:在JDBC中总是以jdbc开始 &&
&&&&子协议:是桥连接的驱动程序或是数据库管理系统名称。 &&
&&&&数据源标识:标记找到数据库来源的地址与连接端口。 &&
&&&&例如:(MySql的连接URL) &&
&&&&jdbc:mysql: &&
&&&&&&&&//localhost:3306/test?useUnicode=true&characterEncoding=gbk&;&&&
&&&useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为 &&
&&&gb2312或GBK,本参数必须设置为true&。characterEncoding=gbk:字符编码方式。 &&
&3、创建数据库的连接 &&
&&&&&要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, &&
&&&&&该对象就代表一个数据库的连接。 &&
&&&&&使用DriverManager的getConnectin(String&url&,&String&username&,& &&
&&&&String&password&)方法传入指定的欲连接的数据库的路径、数据库的用户名和 &&
&&&&&密码来获得。 &&
&&&&&例如: &&
&&&&&//连接MySql数据库,用户名和密码都是root&&&
&&&&&String&url&=&"jdbc:mysql://localhost:3306/test"&;& &&
&&&&&String&username&=&"root"&; &&
&&&&&String&password&=&"root"&; &&
&&&&&try{ &&
&&&&Connection&con&=& &&
&&&&&&&&&&&&&DriverManager.getConnection(url&,&username&,&password&)&; &&
&&&&&}catch(SQLException&se){ &&
&&&&System.out.println("数据库连接失败!"); &&
&&&&se.printStackTrace()&; &&
&4、创建一个Statement &&
&&&&&要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3&&
&&&&&种类型: &&
&&&&&&1、执行静态SQL语句。通常通过Statement实例实现。 &&
&&&&&&2、执行动态SQL语句。通常通过PreparedStatement实例实现。 &&
&&&&&&3、执行数据库存储过程。通常通过CallableStatement实例实现。 &&
&&&&具体的实现方式: &&
&&&&&&&&Statement&stmt&=&con.createStatement()&; &&
&&&&&&&PreparedStatement&pstmt&=&con.prepareStatement(sql)&; &&
&&&&&&&CallableStatement&cstmt&=& &&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&con.prepareCall("{CALL&demoSp(?&,&?)}")&; &&
&5、执行SQL语句 &&
&&&&Statement接口提供了三种执行SQL语句的方法:executeQuery&、executeUpdate &&
&&&和execute &&
&&&&1、ResultSet&executeQuery(String&sqlString):执行查询数据库的SQL语句 &&
&&&&&&&&,返回一个结果集(ResultSet)对象。 &&
&&&&&2、int&executeUpdate(String&sqlString):用于执行INSERT、UPDATE或 &&
&&&&&&&&DELETE语句以及SQL&DDL语句,如:CREATE&TABLE和DROP&TABLE等 &&
&&&&&3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的 &&
&&&&&&&&语句。 &&
&&&具体实现的代码: &&
&&&&&&&&&&ResultSet&rs&=&stmt.executeQuery("SELECT&*&FROM&...")&; &&
&&&&int&rows&=&stmt.executeUpdate("INSERT&INTO&...")&; &&
&&&&boolean&flag&=&stmt.execute(String&sql)&; &&
&6、处理结果 &&
&&&&两种情况: &&
&&&&&1、执行更新返回的是本次操作影响到的记录数。 &&
&&&&&2、执行查询返回的结果是一个ResultSet对象。 &&
&&&&&&ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 &&
&&&&&&行中数据的访问。 &&
&&&&&&使用结果集(ResultSet)对象的访问方法获取数据: &&
&&&&&while(rs.next()){ &&
&&&&&&&&&String&name&=&rs.getString("name")&; &&
&&&&String&pass&=&rs.getString(1)&;&//&此方法比较高效&&&
&&&&(列是从左到右编号的,并且从列1开始) &&
&7、关闭JDBC对象& &&
&&&&&操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 &&
&&&&&明顺序相反: &&
&&&&&1、关闭记录集 &&
&&&&&2、关闭声明 &&
&&&&&3、关闭连接对象 &&
&&&&&&&&&&if(rs&!=&null){&&&//&关闭记录集&&&
&&&&&&&&try{ &&
&&&&&&&&&&&&rs.close()&; &&
&&&&&&&&}catch(SQLException&e){ &&
&&&&&&&&&&&&e.printStackTrace()&; &&
&&&&&&&&} &&
&&&&&&&&&&} &&
&&&&&&&&&&if(stmt&!=&null){&&&//&关闭声明&&&
&&&&&&&&try{ &&
&&&&&&&&&&&&stmt.close()&; &&
&&&&&&&&}catch(SQLException&e){ &&
&&&&&&&&&&&&e.printStackTrace()&; &&
&&&&&&&&} &&
&&&&&&&&&&} &&
&&&&&&&&&&if(conn&!=&null){&&//&关闭连接对象&&&
&&&&&&&&&try{ &&
&&&&&&&&&&&&conn.close()&; &&
&&&&&&&&&}catch(SQLException&e){ &&
&&&&&&&&&&&&e.printStackTrace()&; &&
&&&&&&&&&} &&
&&&&&&&&&&}&
阅读(...) 评论()用java连接mysql数据库_百度知道6323人阅读
JDBC连接数据库概述
一、JDBC基础知识
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。
1、跨平台运行:这是继承了Java语言的“一次编译,到处运行”的特点;
2、不受数据库供应商的限制:巧妙在于JDBC设有两种接口,一个是面向应用程序层,其作用是使得开发人员通过SQL调用数据库和处理结果,而不需要考虑数据库的提供商;另一个是驱动程序层,处理与具体驱动程序的交互,JDBC驱动程序可以利用JDBC API创建Java程序和数据源之间的桥梁。应用程序只需要编写一次,便可以移到各种驱动程序上运行。Sun提供了一个驱动管理器,数据库供应商——如MySQL、Oracle,提供的驱动程序满足驱动管理器的要求就可以被识别,就可以正常工作。所以JDBC不受数据库供应商的限制。
JDBC API可以作为连接Java应用程序与各种关系数据库的纽带,在带来方便的同时也有负面影响,以下是JDBC的优、缺点。优点如下:
操作便捷:JDBC使得开发人员不需要再使用复杂的驱动器调用命令和函数;
可移植性强:JDBC支持不同的关系数据库,所以可以使同一个应用程序支持多个数据库的访问,只要加载相应的驱动程序即可;
通用性好:JDBC-ODBC桥接驱动器将JDBC函数换成ODBC;
面向对象:可以将常用的JDBC数据库连接封装成一个类,在使用的时候直接调用即可。
缺点如下:
访问数据记录的速度受到一定程度的影响;
更改数据源困难:JDBC可支持多种数据库,各种数据库之间的操作必有不同,这就给更改数据源带来了很大的麻烦
二、JDBC连接数据库的流程及其原理
创建一个以JDBC连接数据库的程序,包含7个步骤:
<span style="color:#、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动,就是数据库厂商提供的jar包,将它加载到JVM(Java虚拟机)中,这通过java.lang.Class类的静态方法forName(String className)实现。
01try{02&03//加载MySql的驱动类 04//不同的数据库提供的驱动包是不一样的,在下面大家将会看到常用的驱动类。05Class.forName(&com.mysql.jdbc.Driver&) ; 06System.out.println(&成功加载驱动&);07&08}catch(ClassNotFoundException e){09&10System.out.println(&找不到驱动程序类 ,加载驱动失败!&);11&12e.printStackTrace() ;13&14}
成功加载后,会将Driver类的实例注册到DriverManager类中,我们在下一步中,就可以直接调用类中的方法。
<span style="color:#、提供JDBC连接的URL
o连接URL定义了连接数据库时的协议、子协议、数据源标识。
o书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
下面列出常用的数据库连接URL:
Oracle8/8i/9i数据库(thin模式)
1Class.forName(&oracle.jdbc.driver.OracleDriver&).newInstance();2String url=&jdbc:oracle:thin:@localhost:1521:orcl&;3//orcl为数据库的SID
1Class.forName(&com.ibm.db2.jdbc.app.DB2Driver &).newInstance();2String url=&jdbc:db2://localhost:5000/sample&;3//sample为你的数据库名
Sql Server7.0/2000数据库
1Class.forName(&com.microsoft.jdbc.sqlserver.SQLServerDriver&).newInstance();2String url=&jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb&;3//mydb为数据库
Sybase数据库
1Class.forName(&com.sybase.jdbc.SybDriver&).newInstance();2String url =& jdbc:sybase:Tds:localhost:5007/myDB&;3//myDB为你的数据库名
Informix数据库
1Class.forName(&rmix.jdbc.IfxDriver&).newInstance();2String url =&jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=
MySQL数据库
1Class.forName(&com.mysql.jdbc.Driver&).newInstance();2String url =&jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1&3//myDB为数据库名
PostgreSQL数据库
1Class.forName(&org.postgresql.Driver&).newInstance();2String url =&jdbc:postgresql://localhost/myDB&3//myDB为数据库名
说明:useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为gb2312或GBK,本参数必须设置为true 。aracterEncoding=gbk:字符编码方式。
<span style="color:#、创建数据库的连接
o要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。
o使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。
01String url = &jdbc:mysql://localhost:3306/test& ;02&03String username = &root& ;04&05String password = &root& ;06&07try{08&09Connection con =10&11DriverManager.getConnection(url , username , password ) ;12&13}catch(SQLException se){14&15System.out.println(&数据库连接失败!&);16&17se.printStackTrace() ;18&19}
也可以不单独定义上面username和password,直接将用户名、密码附加在url上,作为参数发送给数据库服务器,例如
1jdbc:mysql://localhost:3306/test?user=root&password=root
<span style="color:#、创建一个Statement
o要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
1Statement stmt = con.createStatement() ; 2PreparedStatement pstmt = con.prepareStatement(sql) ; 3CallableStatement cstmt = con.prepareCall(&{CALL demoSp(? , ?)}&) ;
<span style="color:#、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
具体实现的代码:
1ResultSet rs = stmt.executeQuery(&SELECT * FROM ...&) ; 2int rows = stmt.executeUpdate(&INSERT INTO ...&) ; 3boolean flag = stmt.execute(String sql) ;
<span style="color:#、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
o ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
o 使用结果集(ResultSet)对象的访问方法获取数据:
1while(rs.next()){2&3String name = rs.getString(&name&) ;4&5String pass = rs.getString(1) ; // 此方法比较高效6&7}
(列是从左到右编号的,并且从列1开始)
<span style="color:#、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
01if(rs != null){ // 关闭记录集02&03try{04
rs.close() ;05&06}catch(SQLException e){07&08
e.printStackTrace() ;09&10}
}11&12if(stmt != null){ // 关闭声明13&14try{15&16stmt.close() ;17&18}catch(SQLException e){19&20e.printStackTrace() ;21}
}22&23if(conn != null){ // 关闭连接对象24&25try{26&27conn.close() ;28&29}catch(SQLException e){30&31e.printStackTrace() ;32&33}
三、JDBC应用示例实验
实验使用mysql数据库,使用myeclipse工具新建一个类,命名为&JDBCTest,可以使用Navicat for MySQL可视化数据库操作,新建数据库users,在数据库users里添加&表user_table(&UserId,UserName,PassWord)),有三个字段,本示例主要用于演示数据库连接,连接成功后,插入一条数据。具体内容如下
01import java.sql.*;02public class JDBCTest {03&04/**05* @param args06* @throws ClassNotFoundException 07* @throws SQLException 08*/09public static void main(String[] args) throws ClassNotFoundException, SQLException {10//第一步:打开数据库 需要用户名,密码,数据库地址,数据库名称;11String username = &root&;12String password = &123456&;13&14String url = &jdbc:mysql://localhost:3306/users&;15//1.加载数据库驱动16Class.forName(&com.mysql.jdbc.Driver&);17//2.创建是数据库连接18Connection conn = DriverManager.getConnection(url, username, password);19&20System.out.println(&数据库连接成功!&);21//第二步:操作数据库;22String sql=& insert into user_table ( UserId,UserName,PassWord) values (5,'song','ss') &;23PreparedStatement pt=conn.prepareStatement( sql );24pt.executeUpdate( );25//第三步:关闭数据库;26conn.close();27System.out.println(&数据库操作成功!&);28&29}30&31}
更多关于数据库的操作,如增删改查,参考网友sererin写的如下代码,很详细:
001002&PRE class=java name=&code&&package chp07;003&004import java.sql.Connection;005import java.sql.DriverManager;006import java.sql.ResultSet;007import java.sql.SQLException;008import java.sql.Statement;009&010public class JDBC_Test {011 // 创建静态全局变量012 static Connection conn;013&014 static Statement st;015&016 public static void main(String[] args) {017 insert(); //插入添加记录018 update(); //更新记录数据019 delete(); //删除记录020 query(); //查询记录并显示021 }022&023 /* 插入数据记录,并输出插入的数据记录数*/024 public static void insert() {025&026 conn = getConnection(); // 首先要获取连接,即连接到数据库027&028 try {029 String sql = &INSERT INTO staff(name, age, sex,address, depart, worklen,wage)&030 &#43; & VALUES ('Tom1', 32, 'M', 'china','Personnel','3','3000')&; // 插入数据的sql语句031&032 st = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象033&034 int count = st.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数035&036 System.out.println(&向staff表中插入 & &#43; count &#43; & 条数据&); //输出插入操作的处理结果037&038 conn.close(); //关闭数据库连接039&040 } catch (SQLException e) {041 System.out.println(&插入数据失败& &#43; e.getMessage());042 }043 }044&045 /* 更新符合要求的记录,并返回更新的记录数目*/046 public static void update() {047 conn = getConnection(); //同样先要获取连接,即连接到数据库048 try {049 String sql = &update staff set wage='2200' where name = 'lucy'&;// 更新数据的sql语句050&051 st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量052&053 int count = st.executeUpdate(sql);// 执行更新操作的sql语句,返回更新数据的个数054&055 System.out.println(&staff表中更新 & &#43; count &#43; & 条数据&); //输出更新操作的处理结果056&057 conn.close(); //关闭数据库连接058&059 } catch (SQLException e) {060 System.out.println(&更新数据失败&);061 }062 }063&064 /* 查询数据库,输出符合要求的记录的情况*/065 public static void query() {066&067 conn = getConnection(); //同样先要获取连接,即连接到数据库068 try {069 String sql = &select * from staff&; // 查询数据的sql语句070 st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量071&072 ResultSet rs = st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集073 System.out.println(&最后的查询结果为:&);074 while (rs.next()) { // 判断是否还有下一个数据075&076 // 根据字段名获取相应的&#20540;077 String name = rs.getString(&name&);078 int age = rs.getInt(&age&);079 String sex = rs.getString(&sex&);080 String address = rs.getString(&address&);081 String depart = rs.getString(&depart&);082 String worklen = rs.getString(&worklen&);083 String wage = rs.getString(&wage&);084&085 //输出查到的记录的各个字段的&#20540;086 System.out.println(name &#43; & & &#43; age &#43; & & &#43; sex &#43; & & &#43; address087 &#43; & & &#43; depart &#43; & & &#43; worklen &#43; & & &#43; wage);088&089 }090 conn.close(); //关闭数据库连接091&092 } catch (SQLException e) {093 System.out.println(&查询数据失败&);094 }095 }096&097 /* 删除符合要求的记录,输出情况*/098 public static void delete() {099&100 conn = getConnection(); //同样先要获取连接,即连接到数据库101 try {102 String sql = &delete from staff
where name = 'lili'&;// 删除数据的sql语句103 st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量104&105 int count = st.executeUpdate(sql);// 执行sql删除语句,返回删除数据的数量106&107 System.out.println(&staff表中删除 & &#43; count &#43; & 条数据\n&); //输出删除操作的处理结果108&109 conn.close(); //关闭数据库连接110&111 } catch (SQLException e) {112 System.out.println(&删除数据失败&);113 }114&115 }116&117 /* 获取数据库连接的函数*/118 public static Connection getConnection() {119 Connection con = null; //创建用于连接数据库的Connection对象120 try {121 Class.forName(&com.mysql.jdbc.Driver&);// 加载Mysql数据驱动122&123 con = DriverManager.getConnection(124 &jdbc:mysql://localhost:3306/myuser&, &root&, &root&);// 创建数据连接125&126 } catch (Exception e) {127 System.out.println(&数据库连接失败& &#43; e.getMessage());128 }129 return con; //返回所建立的数据库连接130 }131}132&/PRE&&BR&133&PRE&&/PRE&134&P&&/P&135&P&&STRONG&项目部署到服务器,然后运行结果:&/STRONG&&/P&136&P&&/P&137&PRE&&/PRE&138&PRE&&/PRE&139&PRE&&/PRE&140
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
开发架构群:
(3)(8)(18)(25)(2)(5)(1)(2)(6)(2)(2)(3)(4)(10)(15)(13)(3)酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
如果说用&永存、曲折、已死、重生&来形容Java,笔者以为一点也不为过。
1991年,James Gosling带领着名为&Green Team&的团队着手研发一种新的语言以及专为下一代数字设备和计算机使用的网络系统。历时4年辛勤工作后,该项目最终修成正果并取名为Java。
Java有着类似于C的语法并有&一次编译,随处运行&的灵便性。透过虚拟机机制,可以使代码在底层平台进行运行时编译。回首Java过去的20年,首先是经历了微机时代的兴与衰,然后进入服务器领域及智能电话领域,继而在DHS(美国土安全部)的&不安全&定义下艰难前行,最后投入甲骨文(Oracle)怀抱现正蓄势迸发第二春。难道还有别的语言有如此跌宕起伏的情节吗?
Java推出后,Sun发现市场上存在着一个问题&计算机领域与非计算机领域彼此是隔断的。Sun认为这是一个机遇,如果能把两者连接起来将会带来一场计算机革命。&统一的主题是网络。&Gosling说,&放眼当时的市场,两个领域的厂家各自为政,没有形成统一的网络。因此很多时候不得不重复大量的实验,但这些其实早在30年前的计算机科学中已得到解决。&问题的所在是电子消费品制造者没有考虑使用网络,例如跨平台的公共APIs或者代码复用,&你几乎找不到任何的软件复用。所有软件都只能不断地被重复创建。我们提出的模块概念终将改变这一局面。&
成功非坦途
Java面世的头五年,成为当之无愧的编译器高性能代言人。而过后五年,所有人都把重心转向了企业应用。Gosling说,&回首Java EE统治世界的场景至今仍历历在目。我们唯一的失误是把全部精力都集中于此,所有资源都被优先调配到EE,导致无法投入更多的精力去开拓桌面的世界。&
Oracle Java平台开发副总裁Saab是这样说的,&在90年代,大多数开发者都把精力投入到桌面应用的编写之上。到了2000年,的成功吸引了大批的跟风者。业界又把焦点从桌面转移到了HTML应用。随着智能电话和平板的到来,基于触摸屏的移动应用又站在了风口。所以对于下一个流行趋势是很难把握的,这涉及到天时、地利、人和。&
Java 2 Micro Edition(J2ME)在1998年引入并把Java划分了三个平台:Java 2 Standard Edition(J2SE)、J2ME以及Java 2 Enterprise Edition(J2EE)。ME的意思是小型设备和嵌入系统。ME在翻盖手机上得到推广,成为当时的标配。Gosling说,&ME已经做得足够好了,在当时是最强大的智能电话开发平台。不过现在渐渐被遗忘,因为Android太耀眼了。&
作为一个独立平台,Java ME被边缘化了。Oracle开发部高级副总裁Cameron Purdy说在下一个版本Java 9中会把所有平台统一起来,&对比SE、ME被独立出来但发展缓慢。Java 9的模块化特性会使得Java ME的可复用性得到增强,这将是反击Android和iOS的有力武器。&
随着Sun在最近10年的低迷,Java也不能幸免地经历着蹉跎岁月。IBM报价65亿美元,Sun没答应,74亿美元,Oracle得到了Sun。
在Oracle管理下,头几年Java表现良好,以0重大失误成为安全的代名词。不过在2013年1月情况开始变坏,美国土安全部(DHS)建议人们尽量不要使用Java。作为面向企业的软件公司,打补丁修复Bug的速度是Oracle的短板,根本无法与面向大众消费者的微软或Adobe相比。别人是以小时或天来计,而Oracle是以月为基本单位。
Purdy认为Oracle已经尽了最大的努力去修补并清楚这个短板的重要性。问题的关键是如何打造一支在失去Gosling等干将后仍能独当一面的团队。他说,&我们听到了不少质疑之声,但其实我们一直都在不断加入投入的力度并努力寻求解决的方案。&
DHS的公开声明不啻是压垮Java的最后一根稻草,很多人都预言Java将风光不再。然而事情慢慢得到转机,不少Java粉丝开始出来捍卫Java的名声。Dr. Dobb's Journal编辑Andrew Binstock曾发表一篇社论,其题目是:《》。
对于Oracle的接管,Gosling表达了自己的喜悦之情,&得知这个消息后,我感到非常惊喜。Oracle是个非常优秀的监护人并大大超出了我的期望。一开始我还担心它会不会成为第二个Solaris,现在看来我是多虑了。&
接管Java的头五年,Oracle不得不重新打造一支Java团队。&我们花了大量时间来审视整个过程以确定如何进行Bug修复,从输入到发布机制,我们回顾了大量的代码。最后列出了一个长长的错误修复表。&Purdy回忆说。
安全曾让Java蒙羞,安全也让Java重获新生。在2014 Pwn20wn黑客大会上,Java成为唯一没有被攻破的平台。而在2015的会议中,Pwn20wn甚至没有把Java列在攻击名单上。
现在和未来
Java 9将是自被Oracle收购后发布的首个重大版本。Java 9的最主要目标是最大限度实现模块化以帮助人们实现积木式的应用编写。
&我们的目的是帮助人们从JAR的束缚中解脱出来。&Saab说,&你将很轻松地处理在过去相当复杂的事情,例如打包。你可以只用到需要的模块,而把其它忽略。&Purdy补充道,&这开创了Java平台的先河。该特性将贯穿整个Java库,并以单依赖图的方式重新整理依赖。&
谈及Java的未来,Eclipse基金会执行董事Mike Milinkovich的看法是,&我认为Java的未来在于物联网。我十分乐意看到Oracle及其合作伙伴能把精力放在完全点对点的Java存储方案上,透过网关实现设备到企业后台的连接。如果成功将能使Java在往后20年发展得更好走得更远。虽然这还有一段路要走,但我相信Java能够做到。&
Gosling的看法是,&VM是它本身的生态,所有部分彼此相通。IT世界的未来是要实现互联互通。把边缘和核心有效地统一起来,可以省却内外分开管理的麻烦,从而得到更加强大的平台。&
虽然很多人都曾预言Java将一蹶不振,但是现今在不少的重要项目中,Java仍扮演着极其重要的角色。
Purdy指出,没有Java,甚至不会有大数据的大发展,&Hadoop本身就是用Java编写的。当你需要在运行MapReduce的服务器集群上发布新功能时,你需要进行动态的部署,而这正是Java所擅长的。&
另一Java受惠者是Twitter。一开始Twitter是用Ruby on Rails编写的,但是随着用户数的增长RoR逐渐显得力不从心。Fail Whale(失败鲸)的宕机画面预示着瓶颈问题亟需解决。在2012年,Twitter从RoR转向了Java和Scala,而失败鲸从此灭绝了。
可见Java不但没有成为昨日黄花,还重新焕发了新的生机。让我们共同期待Java 9,看看Oracle将为广大开发者带来什么样的惊喜。
& 相关主题:

我要回帖

更多关于 传奇数据库 的文章

 

随机推荐