超有用 架构型学习型语言
学java可以学一生 因为其中包罗万象 也就是计算机上的最新流行的技术他都包含了 例如分布式 各类的集群 mapreduce算法 webservice各类的接口表达 本地调用远程调用不同语言
java这门语言更适合开发大型应用 因为更适用于制定架构 好的架构易维护性 扩展性都是超强的
对面向对象的全面诠释 23种设计模式的大体的 细节的都描述的完完全全
其实我个人认为java还有一个更强的面 就是数据库方面 对事务并发存储过程函数调用 能使不支持事务数据库利用序列化支持事务 自有缓存机制 且在nosql领域 几乎所有的数据库都支持java(有很多nosql是java写的 例如cassandra hadoop hbase db4o等)
在运行效率上 其实java这门语言本身效率并不低(比C/C++略差,可以用硬件硬顶,跑起来时差也是差不多的) 但是在多util包 框架的限制下 可能效率并不可观 但是牺牲了一些性能 换来了高维护性扩展性是非常可观的 这是其他语言所做不到的
我学java跟c 5年 转c# php python ruby 只需几天的时间 我记得我php codeigniter框架 只花了3天 就了解了整个框架的技术点 画出了框架类图 这是没有java功底所做不到的
新安装了 JDK 6 的程序员们也许会发现,除了传统的 bin、jre 等目录,JDK 6 新增了一个名为 db 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。它只有 2MB 大小,对比动辄上 G 的数据库来说可谓袖珍。但这并不妨碍 Derby 功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于 ASF 强大的社区力量,Derby 得到了包括 IBM 和 Sun 等大公司以及全世界优秀程序员们的支持。这也难怪 Sun 公司会选择其 1022 版本纳入到 JDK 6 中,作为内嵌的数据库。这就好像为 JDK 注入了一股全新的活力:Java 程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。在这一章中,我们将初窥 Java DB 的世界,来探究如何使用它编写出功能丰富的程序。
Hello, Java DB:内嵌模式的 Derby
既然有了内嵌(embedded)的数据库,就让我们从一个简单的范例开始,试着使用它吧。这个程序做了大多数数据库应用都可能会做的 *** 作:在 DBMS 中创建了一个名为 helloDB 的数据库;创建了一张数据表,取名为 hellotable;向表内插入了两条数据;然后,查询数据并将结果打印在控制台上;最后,删除表和数据库,释放资源。
public class HelloJavaDB {
public static void main(String[] args) {
try { // load the driver
ClassforName("orgapachederbyjdbcEmbeddedDriver")newInstance();
Systemoutprintln("Load the embedded driver");
Connection conn = null;
Properties props = new Properties();
propsput("user", "user1"); propsput("password", "user1");
//create and connect the database named helloDB
conn=DriverManagergetConnection("jdbc:derby:helloDB;create=true", props);
Systemoutprintln("create and connect to helloDB");
connsetAutoCommit(false);
// create a table and insert two records
Statement s = conncreateStatement();
sexecute("create table hellotable(name varchar(40), score int)");
Systemoutprintln("Created table hellotable");
sexecute("insert into hellotable values('Ruth Cao', 86)");
sexecute("insert into hellotable values ('Flora Shi', 92)");
// list the two records
ResultSet rs = sexecuteQuery(
"SELECT name, score FROM hellotable ORDER BY score");
Systemoutprintln("namettscore");
while(rsnext()) {
StringBuilder builder = new StringBuilder(rsgetString(1));
builderappend("t");
builderappend(rsgetInt(2));
Systemoutprintln(buildertoString());
}
// delete the table
sexecute("drop table hellotable");
Systemoutprintln("Dropped table hellotable");
rsclose();
sclose();
Systemoutprintln("Closed result set and statement");
conncommit();
connclose();
Systemoutprintln("Committed transaction and closed connection");
try { // perform a clean shutdown
DriverManagergetConnection("jdbc:derby:;shutdown=true");
} catch (SQLException se) {
Systemoutprintln("Database shut down normally");
}
} catch (Throwable e) {
// handle the exception
}
Systemoutprintln("SimpleApp finished");
}
}
随后,我们在命令行(本例为 Windows 平台,当然,其它系统下稍作改动即可)下键入以下命令:
清单 2 运行 HelloJavaDB 命令
java –cp ;%JAVA_HOME%dblibderbyjar HelloJavaDB
图 1 HelloJavaDB 程序的执行结果
上述的程序和以往没什么区别。不同的是我们不需要再为 DBMS 的配置而劳神,因为 Derby 已经自动地在当前目录下新建了一个名为 helloDB 的目录,来物理地存储数据和日志。需要做的只是注意命名问题:在内嵌模式下驱动的名字应为 orgapachederbyjdbcEmbeddedDriver;创建一个新数据库时需要在协议后加入 create=true。另外,关闭所有数据库以及 Derby 的引擎可以使用以下代码:
清单 3 关闭所有数据库及 Derby 引擎
DriverManagergetConnection("jdbc:derby:;shutdown=true");
如果只想关闭一个数据库,那么则可以调用:
清单 4 关闭一个数据库
DriverManagergetConnection("jdbc:derby:helloDB;shutdown=true ");
这样,使用嵌入模式的 Derby 维护和管理数据库的成本接近于 0。这对于希望专心写代码的人来说不失为一个好消息。然而有人不禁要问:既然有了内嵌模式,为什么大多数的 DBMS 都没有采取这样的模式呢?不妨做一个小实验。当我们同时在两个命令行窗口下运行 HelloJavaDB 程序。结果一个的结果与刚才一致,而另一个却出现了错误,如 图 2 所示。
图 2 内嵌模式的局限
错误的原因其实很简单:在使用内嵌模式时,Derby 本身并不会在一个独立的进程中,而是和应用程序一起在同一个 Java 虚拟机(JVM)里运行。因此,Derby 如同应用所使用的其它 jar 文件一样变成了应用的一部分。这就不难理解为什么在 classpath 中加入 derby 的 jar 文件,我们的示例程序就能够顺利运行了。这也说明了只有一个 JVM 能够启动数据库:而两个跑在不同 JVM 实例里的应用自然就不能够访问同一个数据库了。
鉴于上述的局限性,和来自不同 JVM 的多个连接想访问一个数据库的需求,下一节将介绍 Derby 的另一种模式:网络服务器(Network Server)。
网络服务器模式
如上所述,网络服务器模式是一种更为传统的客户端/服务器模式。我们需要启动一个 Derby 的网络服务器用于处理客户端的请求,不论这些请求是来自同一个 JVM 实例,还是来自于网络上的另一台机器。同时,客户端使用 DRDA(Distributed Relational Database Architecture)协议连接到服务器端。这是一个由 The Open Group 倡导的数据库交互标准。图 3 说明了该模式的大体结构。
由于 Derby 的开发者们努力使得网络服务器模式与内嵌模式之间的差异变小,使得我们只需简单地修改 清单 1 中的程序就可以实现。如清单 5所示,我们在 HelloJavaDB 中增添了一个新的函数和一些字符串变量。不难看出,新的代码只是将一些在上一节中特别指出的字符串进行了更改:驱动类为 orgapachederbyjdbcClientDriver,而连接数据库的协议则变成了 jdbc:derby://localhost:1527/。这是一个类似 URL 的字符串,而事实上,Derby 网络的客户端的连接格式为:jdbc:derby://server[:port] /databaseName[;attributeKey=value]。在这个例子中,我们使用了最简单的本地机器作为服务器,而端口则是 Derby 默认的 1527 端口。
图 3 Derby 网络服务器模式架构
清单 5 网络服务器模式下的 HelloJavaDB
public class HelloJavaDB {
public static String driver = "orgapachederbyjdbcEmbeddedDriver";
public static String protocol = "jdbc:derby:";
public static void main(String[] args) {
// same as before
}
private static void parseArguments(String[] args) {
if (argslength == 0 || argslength > 1) {
return;
}
if (args[0]equalsIgnoreCase("derbyclient")) {
framework = "derbyclient";
driver = "orgapachederbyjdbcClientDriver";
protocol = "jdbc:derby://localhost:1527/";
}
}
}
当然,仅仅有客户端是不够的,我们还需要启动网络服务器。Derby 中控制网络服务器的类是 orgapachederbydrdaNetworkServerControl,因此键入以下命令即可。如果想了解 NetworkServerControl 更多的选项,只要把 start 参数去掉就可以看到帮助信息了。关于网络服务器端的实现,都被 Derby 包含在 derbynetjar 里。
清单 6 启动网络服务器
java -cp ;"C:Program FilesJavajdk160dblibderbyjar";
"C:Program FilesJavajdk160dblibderbynetjar"
orgapachederbydrdaNetworkServerControl start
相对应的,网络客户端的实现被包含在 derbyclientjar 中。所以,只需要在 classpath 中加入该 jar 文件,修改后的客户端就可以顺利地读取数据了。再一次尝试着使用两个命令行窗口去连接数据库,就能够得到正确的结果了。如果不再需要服务器,那么使用 NetworkServerControl 的 shutdown 参数就能够关闭服务器。
更多
至此,文章介绍了 Java SE 6 中的新成员:Java DB(Derby),也介绍了如何在内嵌模式以及网络服务器模式下使用 Java DB。当然这只是浅尝辄止,更多高级的选项还需要在 Sun 和 Derby 的文档中寻找。在这一章的最后,我们将简单介绍几个 Java DB 的小工具来加快开发速度。它们都位于 orgapachederbytools 包内,在开发过程中需要获取信息或者测试可以用到。
• ij:一个用来运行 SQL 脚本的工具;
• dblook:为 Derby 数据库作模式提取(Schema extraction),生成 DDL 的工具;
• sysinfo:显示系统以及 Derby 信息的工具类;
Opteros公司发布了一份最新的”开源目录2007〃, 旨在帮助企业了解开源项目的优势。在这份开源目录文档中, 262个项目包含了平台,产品,框架,组件和解决方案 为了使搜索更加简单, 软件产品被分成4类 下面显示了这4类和其它的子类别
262个软件产品中大概20%归入到” *** 作系统和 基础结构”类 48%归入到”应用程序开发和基础结构”类 20%为基础结构解决方案和另外17%的商业应用程序 这样的一个结构与SourceForge相类似 在SourceForge开源项目中, 大约9%的项目归入”商业应用程序 大概50%的项目归入到”应用程序开发和基础结构”中
在262个所有软件中, 非常适合企业应用的软件包括
*** 作系统
Red Hat Enterprise Linux
Suse Linux Enterprise
图形用户接口(客户端)
Gnome
KDE
通信基础结构
Firefox
James(Apache)
Qmail
Thunderbird
安全
ClamAV
FreeRADIUS
John the Ripper
OpenSSH
PuTTY
Web服务器
Apache
系统管理和 *** 作
Nagios
综合
CUPS
ISC BIND
ISC DHCP
Samba
Xen
数据库和文件系统
BerkelyDB
C-JDBC
db4o
Derby
EnterpriseDB Advanced Server
HSQLDB
MySQL
PostgreSQL
应用服务器
JBoss AS
Tomcat
编程语言
GNU gcc
PHP
框架
Hibernate
Spring
symfony
WebWork
Zope
应用开发组件
Dojo
开发和测试环境
Ant
Cruise Control
CVS
Eclipse
GNU Make
JUnit
Subversion
TortoiseSVN
Web服务
Apache Axis
SOA(面向服务的体系结构)
Mule
搜索引擎
Lucene
企业内容管理(文档和内容管理)
Alfresco
eZ publish
MediaWiki
WordPress
CRM, ERP和E-Commerce(客户关系管理, 企业资源计划和电子商务)
SugarCRM
分析, 报告和数据仓库
Mondrian
知识管理和eLearning(数字学习)
Moodle
办公和客户端软件
OpenOfficeorg
以上就是关于java学了有什么用全部的内容,包括:java学了有什么用、java 6 中自带的javaDB(derby)数据库,是否不用启动服务,直接可以和jdk进行交互呀、如何加入免费开源目录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)