用 Apache Derby 和 JRuby on Rails 快速构建原型
简介: Ruby on Rails 提高了在快速开发数据驱动的 Web 站点方面的标准。JRuby 项目使 Ruby 比以前更快更具有可伸缩性。在 Java™ 虚拟机上运行 Rails 的最大优点之一是您可以利用其他 Java 库,如 Apache Derby 嵌入式数据库。Derby、JRuby 和 Rails 的组合允许快速构建动态 Web 应用程序的原型。了解如何结合使用这些技术来帮助您构建下一个伟大构想的原型。
本文将使用若干项可实现快速 Web 开发的前沿技术。可以在 参考资料 小节中找到所有这些技术的链接。我们将使用 JRuby V1.1.3 和 Apache Derby,两者是基于 Java 的技术并且要求使用 Java Development Kit(JDK)V1.4 或更高版本。强烈建议使用 V1.6 JDK,因为 Apache Derby 是与 JDK V1.6 绑定的。如果使用 V1.4 或 1.5 VM,则可以单独下载 Derby。本文中结合使用了 V10.4.1.3 与 V1.5.0_13 JDK。本文还使用 Rails V2.1。假设您具备 Ruby 和 Ruby on Rails 的预备知识,这样才能发挥本文的最大作用。
现在的许多 Web 应用程序框架都注重开发人员的生产率,这很好,因为开发人员的时间十分宝贵,对不对?但是,经常遗漏的一件事是设置时间,包括从一台整洁的计算机转到开发 人员可以编写和运行代码的位置是多么复杂。这不仅仅对于坐在家中使用新技术的开发人员非常重要,而且对于频繁雇佣新开发人员并且想要尽快看到投资回报的组 织来说同样重要。Rails 在此领域成绩斐然 — 并且结合 JRuby 与 Derby 的效果甚至更好。
假定您已安装 V1.6 JDK。JRuby 需要知道 JDK 的位置,因此它遵循查找名为 JAVA_HOME 的环境变量的通用约定,该环境变量指向 JDK。您还应当确保 $JAVA_HOME/bin 位于路径中。现在只需下载 JRuby 并将其解压缩到所需位置。建议创建此位置的环境变量 — 称为 JRUBY_HOME — 并把 $JRUBY_HOME/bin 也放入路径中。这是需要为 JRuby 做的全部操作,但是 Rails 呢?
JRuby 是一个 100% 的 Ruby 实现,它只是将 Java 用于其实现而不是原生代码。它提供了 Ruby 所拥有的一切内容并且包括 gem
。要安装 Rails,只需使用 gem
,如清单 1 中所示。
$ jruby -S gem install rails JRuby limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL Successfully installed activesupport-2.1.0 Successfully installed activerecord-2.1.0 Successfully installed actionpack-2.1.0 Successfully installed actionmailer-2.1.0 Successfully installed activeresource-2.1.0 Successfully installed rails-2.1.0 6 gems installed Installing ri documentation for activesupport-2.1.0... Installing ri documentation for activerecord-2.1.0... Installing ri documentation for actionpack-2.1.0... Installing ri documentation for actionmailer-2.1.0... Installing ri documentation for activeresource-2.1.0... Installing RDoc documentation for activesupport-2.1.0... Installing RDoc documentation for activerecord-2.1.0... Installing RDoc documentation for actionpack-2.1.0... Installing RDoc documentation for actionmailer-2.1.0... Installing RDoc documentation for activeresource-2.1.0... |
注意,使用 JRuby 与原生 Ruby 之间惟一的真正区别是 gem
命令是以 JRuby -S
为前缀的。这将告诉 JRuby 先在 $JRUBY_HOME/bin 目录中查找脚本。这将确保获得 JRuby 的 gem
脚本。
可以让 JRuby 使用现有的 gem
库(即与原生 Ruby 安装共享 gem
库)。只需要设置环境变量。但是,不建议这样做。大多数 gem
是用 Ruby 编写的,并且与 JRuby 兼容。但是某些 gem 是用 C++ 编写的,并且这些 gem 与 JRuby 不兼容。同样地,某些 JRuby gem
是用 Java 语言编写的,并且与原生 Ruby 不兼容。
运行以上命令需要花费一段时间,并且在很大程度上依赖于网络连接速度。Rails 附带 Web 服务器 WEBrick,该服务器肯定不是适合生产环境的 Web 服务器,但是适合快速实现原型化和开发。现在只需一个数据库 — 也就是,Apache Derby。
Rails 使用 ActiveRecord
库处理数据库访问及数据库表与 Ruby 对象模型之间的对象关系映射。这里稍微有些不同,因为使用的是 JRuby 而不是 Ruby。在 Java 语言中,我们有 Java 数据库连接(Java Database Connectivity,JDBC)API 与数据库通信,而且我们希望在 Rails 中利用 JDBC API。因此需要一个额外的 gem
,它允许 ActiveRecord 使用 JDBC。这包括特定于数据库的信息,因此需要安装特定于 Derby 的 gem
。
清单 2. 为 Derby 安装 ActiveRecord-JDBC
gem
$ jruby -S gem install activerecord-jdbcderby-adapter JRuby limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL Successfully installed activerecord-jdbc-adapter-0.8.2 Successfully installed jdbc-derby-10.3.2.1 Successfully installed activerecord-jdbcderby-adapter-0.8.2 3 gems installed Installing ri documentation for activerecord-jdbc-adapter-0.8.2... Installing ri documentation for jdbc-derby-10.3.2.1... Installing ri documentation for activerecord-jdbcderby-adapter-0.8.2... Installing RDoc documentation for activerecord-jdbc-adapter-0.8.2... Installing RDoc documentation for jdbc-derby-10.3.2.1... Installing RDoc documentation for activerecord-jdbcderby-adapter-0.8.2... |
如果您是经验丰富的 Rails 使用者,则可能会发现上面的代码与原生 Ruby 没有太大不同。Rails 总是需要数据库专用的适配器。不过,Rails 绑定了适合 MySQL、PostgreSQL 和 SQLite 的适配器。如果您曾经将 Rails 与其他类型的数据库(例如 Oracle 或 IBM® DB2®)结合使用,则可能已经执行过类似上面的操作。
如述,使用 JDK V1.6 的话,Derby 已经绑定好并且可以开始编写代码(或者生成代码)。如果使用的是 JDK V1.5 或 V1.4,则需要执行更多步骤。需要下载并解压缩 Derby,然后查找 derby.jar 并将其复制到 $JRUBY_HOME/lib 中。现在您已经使用 JDK V1.6 完成了这些工作,可以继续进行开发。
Ruby on Rails 在实践中产生了 “约定优于配置(convention over configuration)” 一词,并且使用它可以轻松地创建应用程序。使用 JRuby 根本不会对此产生影响。现在开始使用 Rails 生成器快速创建应用程序桩。
>rails deadly -d sqlite3 exists create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create config/initializers create db create doc create lib create lib/tasks create log create public/images create public/javascripts create public/stylesheets create script/performance create script/process create test/fixtures create test/functional create test/integration create test/unit create vendor create vendor/plugins create tmp/sessions create tmp/sockets create tmp/cache create tmp/pids create Rakefile create README create app/controllers/application.rb create app/helpers/application_helper.rb ... |
大部分输出已被删除,因为这全是典型的 Rails 输出。您会注意到,我们使用了 -d sqlite3
,这将告诉生 成器脚本使用 SQLite 作为数据库。这是类似于 Derby 的嵌入式数据库,并且它是 Rails V2.0 或更高版本附带的,因此是安全的。我们将在下一个小节中设置 Derby 配置。就像使用任何一个 Rails 应用程序一样,您可以继续并启动它。
=> Booting WEBrick... JRuby limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL => Rails application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2008-07-25 17:18:31] INFO WEBrick 1.3.1 [2008-07-25 17:18:31] INFO ruby 1.8.6 (2008-05-30) [java] [2008-07-25 17:18:31] INFO WEBrick::HTTPServer#start: pid=363524275 port=3000 |
并且就像任何其他 Rails 应用程序一样,我们可以通过转到 http://localhost:3000
在浏览器中打开它,如下所示:
这些都是标准的 Rails 特性。正如欢迎屏幕建议的那样,现在需要设置数据库,以便可以开始向应用程序中添加一些内容。当然,这是使用 Derby 的指定位置。查看清单 5 并查看 Rails 的 Derby 配置。
development: adapter: jdbc driver: org.apache.derby.jdbc.ClientDriver url: jdbc:derby://localhost/deadly_development;create=true username: app password: app test: adapter: jdbc driver: org.apache.derby.jdbc.ClientDriver url: jdbc:derby://localhost/deadly_test;create=true username: app password: app production: adapter: jdbc driver: org.apache.derby.jdbc.ClientDriver url: jdbc:derby://localhost/deadly_production;create=true username: app password: app |
此配置有若干个注意事项。首先,适配器只是 JDBC。通常,需要在这里指定数据库专用适配器,如 MySQL 或 Derby。相反,我们将使用基于 JDBC 的适配器。该 URL 将指定使用的是 Derby。注意 create=true
参数,这些参数将告诉 Derby 在数据库尚不存在时创建数据库。最后,注意用户名和密码。这些只是 Derby 的默认值。现在配置了数据库连接,应该编写一些代码。不过实际上,Rails 将为我们编写代码。
如果使用过 Rails,您很有可能使用过它的搭建(scaffolding)功能或者见过它的实际使用。这可能正是人们对 Rails 称奇的主要原因,并因此被大量其他框架采用和复制。大多数 Rails 专家可以很快告诉您:scaffolding 的目标不是成为一种生产特性,但是它有助于构建原型是毋庸置疑的。它已经发展了许多年,尤其是在 Rails V2.0 中。让我们看看将在清单 6 中使用的生成命令。
>script/generate scaffold boat name:string captain:string crew:integer capacity:integer exists app/models/ exists app/controllers/ exists app/helpers/ create app/views/boats exists app/views/layouts/ exists test/functional/ exists test/unit/ exists public/stylesheets/ create app/views/boats/index.html.erb create app/views/boats/show.html.erb create app/views/boats/new.html.erb create app/views/boats/edit.html.erb create app/views/layouts/boats.html.erb create public/stylesheets/scaffold.css create app/controllers/boats_controller.rb create test/functional/boats_controller_test.rb create app/helpers/boats_helper.rb route map.resources :boats dependency model exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/boat.rb create test/unit/boat_test.rb create test/fixtures/boats.yml create db/migrate create db/migrate/20080727053100_create_boats.rb |
这段代码将生成 ActiveRecord
模型、带有相应映射路径的控制器和几个视图模板。它还根据命令中的参数(与模型属性对应的名称-值对和这些属性的类型)创建初始的数据库迁移脚本。要创建数据库,只需使用 Rake 执行数据库迁移,如下所示:
>rake db:migrate (in /Users/michael/code/aptana/workspace/deadly) == 20080727053100 CreateBoats: migrating ====================================== -- create_table(:boats) -> 0.0395s -> 0 rows == 20080727053100 CreateBoats: migrated (0.0407s) ============================= |
这样,系统将立即创建数据库和 boats 表。注意,无需启动数据库服务器。当 JDBC 驱动程序尝试连接到 Derby 时,它将启动 Derby 并创建数据库,该脚本将创建表。这不仅仅是临时的内存中的数据库;而是永久保存在磁盘中。我们可以再次启动应用程序并且该表将在其中。如果转到 http://localhost:3000/boats
,则应当会看到类似图 2 所示的内容。
在周围单击并创建一些船只。所有内容都存储在 Derby 数据库中。您可以停止并重新启动服务器,重新启动计算机,或者执行别的操作。重新启动服务器后,所有数据都将在其中。Scaffolding 可能看似神秘,但是它并不神秘。它只是可以修改的生成的代码。接下来,让我们看看修改 scaffolding 代码的简单示例。
在很多 Agile 开发方法中都可以见到原型化。您可以快速实现并运行一些内容,然后从产品经理、用户那里得到即时反馈。例如,可以把基于 scaffolding 的原型传递给产品经理,然后产品经理可以研究该应用程序。在使用过一阵子并且添加了一些船只后,它可能类似图 3。
图 3. 带有测试数据的 Boats scaffolding
清单 8 显示了 BoatsController
类的 index
方法。
class BoatsController < ApplicationController # GET /boats # GET /boats.xml def index @boats = Boat.find(:all, :order => "capacity DESC") respond_to do |format| format.html # index.html.erb format.xml { render :xml => @boats } end end end |
实际上还有五个方法(show
、new
、edit
、create
、update
和 destroy
),但是我们不需要修改这些方法。实际上,在这里只修改了 index
方法中的第一行:finder 查询。原来只是 Boat.find(:all)
。在这里,只是添加了一条 order 子句。您可以做出此项更改并刷新浏览器以查看更改,如下所示。
当然,还可以有更多自定义。您可以让用户选择按什么排序、更改界面外观等。要点在于 scaffolding 代码本身不但对于构建原型十分有用,而且还可以轻松修改以接纳反馈。尽管如此,使用 scaffolding 仍然有限制。有时,需要构建各种各样并非来自 scaffolding 的模型和控制器原型。幸运的是,Rails 还提供了更多可以辅助这项工作的生成器。
假定需要创建 catch
模型,该模型表示船只的捕获物。船只与捕获物之间存在一对多的关系。我们将为新模型启动另一个生成器,如下所示:
>script/generate model catch quantity:integer exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/catch.rb create test/unit/catch_test.rb create test/fixtures/catches.yml exists db/migrate create db/migrate/20080727060346_create_catches.rb |
注意,只在生成命令中指定了 quantity 属性(列)。必须执行一些手动编辑才可以添加关系。首先,修改已经生成的迁移脚本。
class CreateCatches < ActiveRecord::Migration def self.up create_table :catches do |t| t.integer :quantity t.integer :boat_id t.timestamps end end def self.down drop_table :catches end end |
在这里生成了所有内容,但 boat_id
除外。现在可以通过使用 Rake 执行迁移,如下所示。
>rake db:migrate (in /Users/michael/code/aptana/workspace/deadly) == 20080727060346 CreateCatches: migrating ==================================== -- create_table(:catches) -> 0.0291s -> 0 rows == 20080727060346 CreateCatches: migrated (0.0299s) =========================== |
需要修改模型。打开 Boat
模型并向其中添加一行代码,如下所示:
class Boat < ActiveRecord::Base has_many :catches end |
默认情况下,该类为空,因为 Rails 将根据来自数据库的表元数据推断该类的属性。只需添加元编程命令来表示一艘船有多个捕获物。类似地,通过修改 catch 模型来完成关系,如下所示:
class Catch < ActiveRecord::Base belongs_to :boat end |
同样只需添加元编程命令以表示一个捕获物属于一艘船。使用 boat_id
表示一个捕获物属于一艘船时,我们遵循了 Rails 命名约定。现在可以创建新控制器。
class DeliveryController < ApplicationController def index @boats = Boat.find :all @catch = Catch.new respond_to do |format| format.html end end def record @catch = Catch.new(params[:catch]) respond_to do |format| if @catch.save flash[:notice] = 'Delivery recorded successfully' format.html { redirect_to :action => "list"} end end end def list catches = Catch.find(:all) @totals = {} catches.each{|catch| if @totals[catch.boat] @totals[catch.boat] += catch.quantity else @totals[catch.boat] = catch.quantity end } @totals = @totals.sort {|a,b| b[1] <=> a[1]} respond_to do |format| format.html end end end |
这段代码将定义三个操作。第一个是用户请求 index
操作 — /delivery(Rails 传递约定将把 /delivery 映射到 DeliveryController
类中)的默认行为。在这里,我们执行了一点额外的工作,以便首先获得所有船只,这样就可以在视图中使用它们。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Record a Delivery</title> </head> <body> <h1>Record a Delivery</h1> <% form_for @catch, :url => { :action => "record" } do |f| %> <%= f.error_messages %> <p> <%= f.label :quantity %> <%= f.text_field :quantity %> </p> <p> <%= f.label :boat %> <%= select("catch", "boat_id", @boats.collect{|b| [b.name, b.id] }, { :include_blank => true })%> </p> <p> <%= f.submit "Record" %> </p> <% end %> </body> </html> |
这段代码类似于使用 scaffolding 可以获得的生成代码,因为我们利用了 Rails 特性快速构建原型。例如,通过使用 ActionView
类中的 form_for
API 使用 FormHelper
对象。我们使用了一些您在生成的代码中看不到的内容。首先,将表单的操作 URL 设为转到 record
方法,如清单 14 所示。我们将简单地查看此方法。接下来,使用 select helper 创建带有选项值的自定义 HTML 选择标记。使用在 DeliveryController
类的 index
方法中检索到的船只,如清单 14 所示。使用一个惯用的 Ruby 并创建数组集,每个数组都有船只名称及其 ID。这些将成为生成的 HTML 中的选项标签和选项值。这段代码本应该放入控制器中,但是它演示了 Ruby 的表现力并且该表现力是让 Ruby 非常适合快速原型化和开发的原因之一。
清单 15 中的表单执行清单 14 中的 DeliveryController
类的 record 操作。此方法将简单地创建一个新 Catch
实例并保存。然后它将转发给 list 操作(同样来自清单 14)。此操作将查询数据库以检索所有 Catch
记录。然后它聚集记录以计算数据库中每艘船的捕获物总数。您也可以使用自定义查询执行此计算。记录集合随后被划分到一组双元素数组中,其中第一个元素是 Boat
对象,第二个元素是该船只的捕获物总数。随后被传递到如下所示的视图:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>List Totals</title> </head> <body> <h1>Totals</h1> <table> <tr> <th>Boat</th> <th>Total</th> </tr> <% for total in @totals %> <tr> <td><%=h total[0].name %></td> <td><%=h total[1] %></td> </tr> <% end %> </table> <br /> <%= link_to 'Add catch', :action => "index" %> </body> </html> |
这就是创建所有船只及其总数表的非常标准的 Rails 模板。我们还使用最后一个 helper 为用户创建返回到 index 操作的链接。现在我们拥有了一个迷你应用程序的完整原型,这将结束本文,但是我们另外介绍了一些内容:关于结合使用 IDE 与 JRuby 和 Derby 的简要说明。
对于许多开发人员,快速构建原型和开发意味着需要使用一种 IDE。Ruby 不是构建 IDE 的最简单语言,并且对于 JRuby 也是这样。但是,有若干个优秀 IDE 可用,包括基于 Eclipse 的 RadRails。还有一些介绍这个优秀工具的文章(请参阅 参考资料),但是结合使用 JRuby 与 Derby 可能会有点棘手。大多数 IDE(包括 RadRails)都需要 Ruby 调试 gem
,以便 IDE 的调试器可以连接到 Ruby VM 中。此 gem
是用 C++ 编写的原生 gem
。这个 gem
(目前)不可以与 JRuby 结合使用。相反,必须编写 Java 版本,但幸运的是,已经为这个非常重要的 gem
编写了 Java 版本。需要直接下载一个基于 Java 的 gem
,然后安装它和一些其他基于标准 Ruby 的 gem
。此过程如下所示:
$ jruby -S gem instal -l ruby-debug-base-0.10.1-java.gem Successfully installed ruby-debug-base-0.10.1-java 1 gem installed Installing ri documentation for ruby-debug-base-0.10.1-java... Couldn't find file to include: 'VERSION' Installing RDoc documentation for ruby-debug-base-0.10.1-java... Couldn't find file to include: 'VERSION' $ jruby -S gem install --ignore-dependencies -v 0.10.1 ruby-debug Successfully installed ruby-debug-base-0.10.1-java 1 gem installed Installing ri documentation for ruby-debug-base-0.10.1-java... Couldn't find file to include: 'VERSION' Installing RDoc documentation for ruby-debug-base-0.10.1-java... Couldn't find file to include: 'VERSION' $ jruby -S gem install --ignore-dependencies ruby-debug-ide Successfully installed ruby-debug-ide-0.2.0 1 gem installed |
您可以在使用标准的 Ruby 调试 gem
的任何 IDE 中轻松地添加断点并调试应用程序,还可以使用调试器逐步调试一些 Rails 代码,并且更好地了解其中的奥秘。
在本文中,我们看到了 JRuby、Rails 和 Apache Derby 的组合如何能够生成快速构建原型和开发的优秀环境。使用 Rails,我们能够使用生成器生成样本代码,并且可以通过少量工作创建更多自定义应用程序。在 JRuby 和 Derby 的帮助下,我们在应用程序中内嵌了一个事务性持久数据库;只要我们的应用程序运行,这个数据库就不会停止。现在,您可以使用更多 Rails 特性来添加更多模型、控制器和视图。您可以使用 Rails 中的 Ajax helper 轻松地向应用程序添加 Ajax。您还可以使用 IDE,例如基于 Eclipse 的 RadRails,从而进一步提高原型构建与开发的速度。
示例源代码 | os-ad-prototype-jruby-deadly.zip | 110KB | HTTP |
学习
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文。
- 阅读 “使用 Ruby on Rails 快速开发 Web 应用程序” 了解 Ruby on Rails 如此吸引开发人员的原因。
- 阅读 “脱离 Rails 看 Ruby” 钻研 Ruby 编程语言。
- 还有比 Rails 更好的选择吗?为什么选择 Rails 和 Ajax?在这篇 “跨越边界: Ajax on Rails” 文章中了解两项最热门技术的信息。
- 阅读 “用 Eclipse Europa 进行 Web 开发,第 3 部分:Ruby Development Toolkit 和 RadRails” 了解如何使用 RadRails 辅助 Rails 开发。
- 阅读 “在 JRuby 中构建 Apache Derby 数据库应用程序的两种方法” 观察结合使用 JRuby 和 Derby 的其他一些方法。
- 如果需要了解 JRuby,JRuby 主页 是最佳查找位置。
- 了解 JRuby 未来方向的好去处 —— JRuby 首席开发人员 Charles Nutter 的博客。
-
RubyonRails.com 是获得入门级教程、指南和下载源代码和文档的位置。
获得产品和技术
- 从项目 Web 站点中下载 JRuby。
- 下载 Java SDK V1.6。
- 下载 Apache Derby;本文使用 V10.4.1.3。
- 下载 Ruby;本文使用 V2.1。
- 使用 IBM 试用软件 改进您的下一个开发项目,这些软件可以通过下载或从 DVD 中获得。
- 下载 IBM 产品评估版 并开始使用来自 DB2、Lotus、Rational、Tivoli 和 WebSphere 的应用程序开发工具和中间件产品。
相关推荐
收集的学习资料,包括:Derby数据库(V10.9)用户手册(PDF版),用 Apache Derby 进行 Java 数据库开发,用 Apache Derby 进行数据库开发,03开源项目(三)嵌入式数据库Apache Derby(1)(开发指南).pdf ,Apache Derby ...
由于它采用Java编写,因此只要操作系统支持Java虚拟机(JVM),Apache Derby就可以在其上运行。这意味着Apache Derby具有很好的跨平台特性,可以部署在多种操作系统上,如Windows、Linux、Mac OS等。 Apache Derby...
2. **嵌入式数据库**:Derby可以在同一JVM进程中运行,无需单独的服务或守护进程,适合于桌面应用和轻量级服务器环境。 3. **网络模式**:除了嵌入式,Derby还支持通过网络连接访问数据库,这样可以实现多用户环境。...
由于其主要代码是用Java编写的,因此它具有良好的跨平台特性,可以在任何安装了Java虚拟机(JVM)的操作系统上运行。这使得Derby在需要一个轻量级、易于部署的数据库解决方案时成为一种极佳选择。此外,它的纯Java...
它以其轻量级、高性能和纯Java实现而著称,使得用户只需在目标操作系统上安装Java虚拟机(JVM),即可运行Derby。这种特性使得Derby成为一种跨平台的解决方案,适用于多种环境,包括开发测试环境以及嵌入式应用。 ###...
- GettingStartedwithDerby:这可能是一份指南,旨在帮助新用户快速上手使用Apache Derby。 - DerbyReferenceManual:作为参考手册,该手册可能为数据库管理员和开发人员提供了详细的API文档和数据库操作的参考...
1. **平台无关性**:由于基于Java,Derby可以在任何支持Java虚拟机(JVM)的操作系统上运行,如Windows、Linux、Mac OS等。 2. **轻量级**:小体积使其成为嵌入式环境的理想选择,可以与应用程序一起打包,无需额外...
在Eclipse中开发Apache Derby应用程序涉及到一系列步骤和工具的使用。Apache Derby是一款开源的关系型数据库管理系统,它轻量级、嵌入式,适用于Java应用程序。Eclipse作为流行的Java集成开发环境,提供了丰富的工具...
嵌入式数据库Apache Derby是用 Java 语言编写的,所以可以在任何存在合适的 Java 虚拟机(JVM)的地方运行,Derby软件绑定在Java档案(JAR)文件中,只有2MB大小.
【Apache Derby 开发详解——轻松获胜】 Apache Derby 是一款开源的、基于标准的轻量级Java数据库管理系统,由...通过学习和使用Apache Derby,开发者可以更高效地实现数据存储和管理,取得开发过程中的节节胜利。
作为一款基于Java的DBMS,Derby具有跨平台的优势,因为它完全运行在Java虚拟机(JVM)之上,只要有Java环境支持,就能在各种操作系统上运行,包括Windows、Linux、Mac OS等。 Apache Derby 10.9版是该数据库系统的...
作为一款纯Java编写的应用程序,Apache Derby具备跨平台的特性,只要有Java虚拟机(JVM)运行环境的支持,它就可以在不同的操作系统中运行。这意味着它几乎可以运行在任何支持Java的设备上,从嵌入式系统到大型...
3. Derby Developer's Guide for 10.7版本:开发者指南为软件开发者提供了一系列的开发技巧和最佳实践,包括如何用Derby构建应用程序,以及在应用程序中管理数据库。该指南可能还会涉及到性能优化和事务管理的高级...
Derby完全用Java编写,因此它具有很好的跨平台特性,只要操作系统上有Java虚拟机(JVM)运行环境,Derby就可以被部署和执行。 Derby的体系结构支持嵌入式运行模式,这意味着它可以作为一个库被应用程序直接包含在代码...
Apache Derby是一个由Apache软件基金会研发的开源关系数据库管理系统(RDBMS),它的特点在于完全用Java编写,这意味着它具有很好的可移植性。由于其纯Java的特性,Derby可以在任何支持Java虚拟机的操作系统上运行,...
在使用Apache Derby时,开发者通常会依赖`derby.jar`和其他相关的JAR文件,这些文件可能包含在名为`apachederby`的压缩包中。例如,`derbyclient.jar`用于客户端连接,`derbynet.jar`支持网络服务器模式,`...
学习如何使用 Apache Derby、Apache MyFaces 和 Facelets 来开发 Java:trade_mark:Server:trade_mark: Faces (JSF) 应用程序。本文中示例应用程序使用了 Model-View-Controller (MVC) 架构,用来说明 MyFaces 组件的...