java使用外部库_在Java中使用外部库

java使用外部库

Java附带了一组核心库,其中包括定义常用数据类型和相关行为的库,例如StringDate ; 与主机操作系统进行交互的实用程序,例如SystemFile ; 有用的子系统来管理安全性,处理网络通信以及创建或解析XML。 考虑到核心库的丰富性,通常很容易找到必要的点点滴滴,以减少程序员为解决问题而必须编写的代码量。

即使这样,人们还是发现了很多有趣的Java库,这些人发现了核心库中的空白。 例如, Apache Commons “是一个专注于可重用Java组件各个方面的Apache项目”,并提供了约43个开源库的集合(截至本文撰写),涵盖了Java核心之外的一系列功能(例如, 几何统计信息 ),或者增强或替换Java核心中的功能(例如mathnumber )。

Java库的另一种常见类型是系统组件(例如,数据库系统)的接口。 本文着眼于使用这样的接口连接到PostgreSQL数据库并获得一些有趣的信息。 但是首先,我将回顾库的重要内容。

什么是图书馆?

当然,一个库必须包含一些有用的代码。 但是有用的是,必须以某种方式组织代码,以便Java程序员可以访问组件来解决当前的问题。

我将大胆地宣称,库的最重要部分是其应用程序编程接口(API)文档。 这种文档为许多人所熟悉,并且通常由Javadoc生成, Javadoc读取代码中的结构化注释,并生成HTML输出,该输出在页面左上角的面板中显示API的程序包。 它的类在左下角; 以及右侧的库,包或类级别的详细文档(取决于在主面板中选择的内容)。 例如, Apache Commons Math顶级API文档如下所示:

API documentation for Apache Commons Math

在主面板中单击一个程序包将显示该程序包中定义的Java类和接口。 例如, org.apache.commons.math4.analysis.solvers显示了诸如BisectionSolver之类的类, 该类使用二分法查找单变量实函数的零。 并点击BisectionSolver链接列表类BisectionSolver的所有方法。

org.apache.commons.math4.analysis.function ,您可以想象使用该包来构成一个函数定义,然后使用 org.apache.commons.math4.analysis.solvers包来查找刚创建的函数的零。 但是,实际上,您可能需要更多面向学习的文档才能桥接到参考文档。 也许甚至是一个例子!

该文档结构还有助于阐明程序包的含义(相关Java类和接口定义的集合),并显示在特定库中捆绑了哪些程序包。

此类库的代码通常在.jar文件中找到,该文件基本上是Java jar命令创建的.zip文件,其中包含一些其他有用的信息。 .jar文件通常创建为编译过程的终结点,该编译过程将编译定义的各种程序包中的所有.java文件。

要访问外部库提供的功能,有两个主要步骤:

  1. 确保通过类路径(命令行上的-cp参数或CLASSPATH环境变量)可用于Java编译步骤javac和执行步骤java的库。
  2. 使用适当的import语句访问程序源代码中的包和类。

其余的就像使用Java核心类(例如String)进行编码-使用库提供的类和接口定义编写代码。 容易吗? 好吧,也许不是那么容易。 首先,您需要了解库组件的预期使用模式,然后才能编写代码。

示例:连接到PostgreSQL数据库

在数据库系统中访问数据的典型使用模式是:

  1. 可以访问特定于所用数据库软件的代码。
  2. 连接到数据库服务器。
  3. 建立查询字串。
  4. 执行查询字符串。
  5. 对返回的结果进行处理。
  6. 与数据库服务器断开连接。

所有这些的面向程序员的部分由独立于数据库的接口包java.sql提供 ,该接口包定义了核心客户端Java数据库连接(JDBC)API。 java.sql软件包是核心Java库的一部分,因此不需要向编译步骤提供.jar文件。 但是,每个数据库提供程序都会创建自己的java.sql接口实现,例如Connection接口,并且必须在运行步骤中提供这些实现。

让我们看看如何使用PostgreSQL。

访问数据库特定的代码

以下代码使用Java类加载器Class.forName()调用)将PostgreSQL驱动程序代码引入正在执行的虚拟机中:


   
   
   
import java.sql.* ;

public class Test1 {

    public static void main ( String args [ ] ) {

        // Load the driver (jar file must be on class path) [1]

        try {
            Class . forName ( "org.postgresql.Driver" ) ;
            System . out . println ( "driver loaded" ) ;
        } catch ( Exception e1 ) {
            System . err . println ( "couldn't find driver" ) ;
            System . <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值