`

用Eclipse构建Perl应用程序

    博客分类:
  • perl
 
阅读更多

开始之前

对于许多 Perl 程序员来说,典型的开发环境可能是一个编辑器(比如 Emacs),再加上一个命令行环境。问题是必须经常在 Emacs 和命令行之间切换。如果正在进行 Web 开发,那么就更糟了,因为在编写、执行和检查日志以获得信息时必须在 Emacs、命令行和 Web 浏览器之间切换。令人吃惊的是,没有哪种 IDE 真正满足 Perl 程序员这么多年来的需要,EPIC 和 Eclipse 正是要填补这一空白。

EPIC 是一个完整的插件套件,它在 Eclipse 中支持一种新的 “自然环境”。EPIC 插件将扩展与编辑器结合起来,使它能够理解 Perl 结构和布局。这个插件还增加了额外的代码视图和界面以及相关信息,使开发人员能够查看文档、执行 Perl 应用程序并调试它们。

关于本教程

本教程将讨论 EPIC 插件的基本知识,然后使用一个真实的示例来研究 EPIC 系统,这个示例完全在 Eclipse 中开发一个支持 RSS 分析的小模块和脚本。可以利用这个机会研究其他领域,比如与 Perldoc 的集成、代码折叠和重构 —— 这些都可以使应用程序开发过程更顺畅。在学完本教程之后,您会很好地理解在 Eclipse 中开发 Perl 应用程序时如何使用 EPIC 插件。

前提条件

为了使用 EPIC,需要以下工具:

Eclipse V3.0 或 3.1

Java V1.3、1.4 或更高版本

Perl V5.8.6 或更高版本。大多数 UNIX® 和 Linux® 以及 Mac OS X 包含 Perl 的一个版本。在 Windows® 上,使用 ActivePerl。

CPAN 上的 PadWalker Perl 模块

EPIC(Eclipse Perl Integration),SourceForge 上的针对 Eclipse 平台的开放源码 Perl IDE。

为什么要使用 IDE?

本节讨论使用集成开发环境(Integrated Development Environment,IDE)而不是更传统的方法的原因。

开发期间的任务

在讨论使用 IDE 而不是更传统的方法的原因之前,有必要考虑一下在用脚本语言进行开发时可能执行的所有任务。这与典型的编译语言开发有些差异。一般不需要将源代码编译成最终的应用程序,但是有一些必须执行的任务:

编写代码 —— 这包括调整格式,使代码的可读性更好。

检查有效性 —— 尽管不对代码进行编译,但是代码仍然有严格的结构,仍然可能在代码中引入 bug 和问题,通过在代码上执行某些简单的检查可以识别出这些问题。

访问文档 —— 无论程序员多出色,都几乎肯定需要查看文档的某些方面。

编写注释/文档 —— 在代码中添加注释来增加代码的可读性,增加文档来为别人提供帮助。

执行代码 —— 常常需要尝试运行正在编写的代码,在使用脚本语言时尤其如此。

调试 —— 一般需要通过严格的调试过程探测执行期间的任何问题。

如何执行这些任务取决于使用的环境。我们先来看看典型的非 IDE 环境。

 

现有的环境

问问典型的 Perl 程序员,他使用什么来编辑和处理 Perl 脚本,他很可能只是说出他喜欢的编辑器 —— 可能是 vi,甚至是 Notepad。他也可能使用功能更丰富和智能化的编辑器,比如 Emacs 或 oXygen,它们提供了内置的标记、高亮显示和智能格式化。

能够使用标准编辑器进行编辑并通过命令行直接执行程序,这是脚本语言(比如 Perl、Python、PHP 和 Ruby)的主要好处和优点之一。

编辑器方式有一些明显的好处。例如,无论有没有特定的编辑器,都可以在任何地方轻松地编辑和创建脚本,所以对于在哪里和何时进行编程并没有限制。

但是,其他方面就不太好了。例如,查看文档常常需要在另一个应用程序或终端窗口中进行。执行应用程序也需要打开另一个 shell 或终端窗口。另外,还不能将项目作为一个整体进行管理。典型的 Perl 项目由 Perl 脚本、模块和其他数据(比如 XML 文件或其他数据源)组成。它们可能都在同一个文件夹中,但是它们的相互关系和意义可能不明显。

IDE 的好处

任何 IDE 的关键元素直接与它的第一个单词 “集成(integrated)” 相关。任务 一节中描述的所有步骤一般都可以在一个 IDE 中执行,而不需要切换出这个应用程序。

例如,可以编写代码并自动地格式化。在输入代码时,代码中的错误或拼写错误可以高亮显示,还可以使用文档的热链接来查看需要使用的函数或模块,而不需要单独查找此信息。

通常,还可以执行应用程序(并监视执行情况),从而判断它是否工作正常,还可以调试它的操作。

可以在应用程序中直接使用执行和调试过程中产生的信息和输出。例如,产生的错误和警告会提供一个链接,让开发人员可以直接返回到源代码中的相关行。

总的来说,集成开发系统的主要好处是可以节省时间。不再需要花时间在应用程序之间切换,或者寻找和定位产生问题的代码。所有信息不但高亮显示,而且加了链接,所以很容易在代码结构中工作。

习惯于简单编辑器方式的脚本程序员通常不熟悉其中的许多功能。但是,现在应该考虑转到更方便的环境了。

安装和设置

我们来看看如何安装 EPIC 插件,从而可以使用 IDE 特性编写 Perl 应用程序。

安装 EPIC 插件

在使用 EPIC 之前,需要安装这个插件。在此之前,显然需要一个 Perl 解释器。我使用基于 BSD的Mac OS X,它附带基于 UNIX的Perl 解释器,这种解释器也可以在任何其他 UNIX/Linux 主机上使用。在 Windows 上,可以使用 ActivePerl 解释器(来自 ActiveState)或 Cygwin 系统中提供的 Perl 解释器。我喜欢 ActivePerl,但您可以自由选择。

得到 Perl 解释器之后,使用 Eclipse的Software Update 组件来安装它:

选择 Help > Software Update > Find and Install,会看到一个对下载进行配置的窗口,见图 1。

图 1. Software Update 窗口

 

点击 Next。

点击 New Remote Site。给新站点起名字并输入源 URL(http://e-p-I-c.sf.net/updates"),见图 2。

图 2. 创建新站点

374x185

然后按照屏幕上的说明寻找、选择和安装插件。

快速配置

以后再仔细研究首选项以及它们对使用 EPIC 插件的方式的影响,但是可以快速浏览一下首选项面板,对可用的功能有个概念。

要访问 EPIC 的首选项,打开标准 Eclipse Preferences Window 并在左边的导航面板中选择 Perl EPIC 文件夹,见图 3。

图 3. EPIC 首选项

 

首选项分成几部分,首先是插件的一般首选项:

General Preferences —— 设置 Perl 可执行程序的位置、解释器、执行模型以及在后台检查代码之前等待的时间段。

Code Assist —— 设置触发自动补全的字符。

Editor —— 设置编辑器首选项,包括不同组件的高亮显示颜色、注释格式,等等。

Source Formatter —— 设置格式化首选项。

Task Tags —— 设置任务标记,这是一种快速提示,可以将开发人员带回特定位置。

Templates —— 设置代码模板,模板可以直接插入代码,从而加快开发速度。

在本文中,当这些选项影响到工作方式时,我会说明如何进行调整。还会在专门的小节中讨论一些特定元素,比如任务标记和模板

Windows 提示

在 Windows 上的 Eclipse 中使用 EPIC 插件时,有一些技巧可以改进与组件的交互。

如果使用 ActiveState的ActivePerl 发行版,那么将 Perl 可执行程序改为 wperl.exe 可执行文件(在 General Preference 面板中设置)。这会防止每次检查代码时都显示命令提示窗口。将 Perl 二进制目录添加到路径中也是好想法,但不是必需的。在安装 ActivePerl 时应该已经自动添加了。

如果使用 Perl的Cygwin 版本,那么要确保可以通过系统路径访问 mount 命令(这是标准 Cygwin 安装的一部分)。可以通过检查环境变量的值来确认这一点。采用的操作步骤是:

打开 System Control Panel(点击 Start > Control Panels > System,或者右击 My Computer 并选择 Properties)。

切换到 Advanced 面板。

点击 Environment Variables。应该会看到与图 4 相似的窗口。

图 4. Windows 中的系统和用户环境变量

 

检查 PATH 变量的值。如果没有列出 Perl 或 Cygwin 二进制目录,那么将它们添加到路径值中。各个目录用分号分隔。

创建项目和文件

要在 Eclipse 中使用 EPIC 插件编写 Perl 应用程序,需要理解 Perl 项目和文件的角色。

创建新项目

我们来创建一个新的 Perl 项目。因为 EPIC 提供了一个新环境,我们可以创建新项目来构建 Perl 应用程序。为了进行讨论,我们将构建一个 Really Simple Syndication(RSS)应用程序,它可以从互联网下载 RSS 文件、分析它并转储信息摘要。然后可以扩展这些基本功能。

先创建一个新项目来包含 RSS 项目文件。创建新项目的办法是从可用项目类型的列表中选择一个项目类型。选择 New > Perl Project,或者选择 New > Other 并从列表中选择 Perl Project。会看到图 5 所示的结果窗口。

图 5. 创建新的 Perl 项目

 

给项目起名字(RSS Feeder)并指定项目的工作空间,或者使用默认的工作空间。

在创建新的 Perl 项目时,Eclipse 应该会自动切换到 Perl 透视图。Perl 透视图包括许多特定的面板,这些面板可以帮助编写 Perl 脚本。

Perl 透视图

如果 Eclipse 没有自动切换到 Perl 透视图,可以手动切换到它:使用 Window > Open Perspective 并从透视图列表中选择 Perl。在图 6 中可以看到这个透视图的示例,这里打开了一些文件和视图。

图 6. Perl 透视图

在图 6 中可以看到,这个透视图包含许多不同的面板(在 Eclipse 中称为视图),包括:

Package explorer 视图 —— 这显示项目的布局(文件、模块和脚本)。

当前文件的 Outline 视图 —— 这显示当前文件中导入的模块列表和定义的函数列表。

标准编辑器/文件界面 —— 这显示项目中的各个源文件。

Tasks 视图 —— 这显示登记的任务列表。

Console 视图 —— 这是应用程序的标准输出。

Problems —— 这个视图高亮显示当前项目的代码中的错误,并提供链接。

在本教程中,将使用大多数视图中包含的信息。记住,任何时候都可以添加和删除视图:从 Window 菜单选择 Show View,并直接选择一个视图,或者选择 Other 菜单项并从一个更大的列表中选择。

 

创建新文件

创建了新项目之后,第一个任务是创建新文件。EPIC 中的文件可以是脚本或 Perl 模块。对于 EPIC 来说,这两者之间没有区别,但是 Perl 当然会区别对待它们。因为 EPIC 并不区分这两者,所以必须依靠文件扩展名来区分给定项目中的这两种文件。

创建新文件的办法是从可用的文件类型列表中选择一种。选择 New > File > Other 并从列表中选择 Perl File,见图 7。

图 7. 选择 Perl 文件

然后可以看到 Perl 文件属性窗口,见图 8。

图 8. 设置 Perl 文件属性

 

需要指定应该创建这个文件的文件夹(或项目)和文件名。通过点击 Advanced 按钮并设置首选项,可以将这个文件与文件系统上的现有文件关联起来。

点击 Finish 创建新文件。这时会出现文件的编辑器窗口。

编辑器特性和 Perldoc 集成

任何编程工作的主要部分实际上都是编写代码,所以 EPIC 的许多功能都与改进编辑器环境有关。

Perl 编辑器

实际生成代码基本上就是将希望编写的代码输入编辑器中。但是 Perl 编辑器与其他编辑器有一些差异。主要的差异是可以利用的额外功能。

第一个特性是语法彩色显示。源代码的不同元素(根据设置)以不同的颜色显示,这样就更容易识别代码中的不同成分。

例如,如果输入以下代码:

use strict;
use warnings;

use 关键词将以与要装载的模块的名称不同的颜色高亮显示。语法高亮显示应用于许多元素,每种元素都有自己的颜色。可以通过修改首选项来修改这些颜色。元素包括函数、参数、静态字符串和变量以及关键词,等等。

第二个特性在进行编辑期间出现,即在执行之前进行标准检查,对识别出的错误进行高亮显示。例如,输入以下代码(要完全一样):

use XML:RSS;

如果停顿一会儿(必须停顿的时间是可配置的),EPIC 插件检查代码的格式和语法,并报告发现的任何错误。有错误的代码行会高亮显示,如果切换到 Problems 视图,会看到对错误的描述以及发生错误的文件和行。在图 9 中可以看到一个示例。

图 9. 代码中高亮显示的错误

 

在这个示例中,因为代码是错的,所以它自动地高亮显示。需要两个冒号,Perl 才能识别出模块。要获得更详细的帮助,可以右击错误行并选择 Explain Errors/Warnings,就会出现对问题更完整的描述和可能的解决方案。

注意,并不是由 EPIC 自己检查代码的有效性。它通过 Perl 检查代码,并分析输出。这确保代码是有效的 Perl 代码,也意味着还会应用代码中的附注(比如前面定义的警告附注和严格附注)。

简单的代码补全

语法和错误高亮显示尽管有用,可以减少在代码中引入的错误和拼写错误数量,但是不能提高创建代码的速度。

为了提高生成代码的速度和代码质量,EPIC 会自动地补全一些常见元素。例如,如果输入:

my $feeds = {"

实际上得到的是:

my $feeds = {""}

EPIC 自动地补上了结束花括号和引号。

在前一行上添加分号,并在新行上输入 $。

停顿一会儿,EPIC 将显示可能的变量列表。您只定义了一个变量,但是系统可以自动地建议任何变量类型的可能的变量补全:标量($)、数组(@)或散列(%)。

为了继续构建 RSS 分析器,我们用关于提要(feed)的一些信息填充散列。为了进行演示,定义以下散列:

my $feeds = {"MCslp" => "http://mcslp.com/?feed=rss2"};

要想下载 RSS 提要,需要使用 Lib WWW Perl library(LWP),它可以通过 URL 中指定的方法处理所有下载。需要创建一个新的 UserAgent 对象。将 LWP::UserAgent 模块添加到脚本的开头。然后输入:

$ua = LWP::UserAgent->

在图 10 中可以看到,EPIC 将提供为完成这一行可能使用的函数的列表。这种交互式的补全结合了文档查询和代码补全,可以提示出可应用于一个对象或类的函数或方法,允许开发人员进行选择。

图 10. 交互式方法补全

514x243

注意,要想让这个系统在对象上正确工作,就必须用 $ua = LWP::UserAgent->new(); 而不是 $ua = new LWP::UserAgent; 来创建对象。这是由 EPIC 判断此信息的方式决定的。

 

基本的 Perldoc 集成

让我们回到 RSS 提要程序(feeder)示例。在分析一个提要时,可能希望注意处理这个提要的日期和时间。内置的 Perl localtime() 函数返回一系列包含时间信息的变量。但是,尽管我用 Perl 进行编程已经有 10 年了,但是还记不住信息的次序。

利用 Eclipse 和 EPIC,就可以输入这个函数名、双击选择它并在它上面停留一会儿,就会出现对这个函数的说明。此信息同样是从 Perldoc 获得的。现在可以看到返回值是什么。在图 11 中可以看到一个示例。

图 11. 获得内联文档帮助

438x200

输入 localtime。现在高亮显示这个单词并在它上面停留。

此信息直接取自 Perl 文档(Perldoc)。Perldoc 是一个命令行接口,它会将嵌入在 Perl 脚本和模块中的文档提取出来。

在 Perldoc 中查找完整的定义

还可以使用、浏览和搜索来自 Perldoc 库的信息。如果按下 Control-Shift-H 或在编辑器中右击,就会提示您选择要寻找的 Perldoc 部分(模块、内置函数或 FAQ 搜索)。还可以高亮显示一个条目并右击或者使用键盘快捷键。在这两种情况下,信息显示在一个特殊的 Perldoc 视图中。在图 12 中可以看到 Perldoc 视图,其中显示了 LWP::UserAgent 模块的信息。

图 12. 完整的 Perldoc 集成

572x345

 

与语法检查一样,此信息也是通过标准的 Perl 工具获得的。EPIC 并没有替代它们的功能,而是在需要的时候通过它们获得信息,以便为开发人员提供最大的帮助。这意味着可以通过 Emacs 或命令行获得的信息,也能够通过 EPIC 和 Eclipse 获得。

对于 Perldoc 来说,这意味着可以访问所有标准的 Perl 页(比如 perlre 或 perlfunc),单独访问特定的区域(例如,可以获得单个函数的定义,正如 localtime 所证明的),还可以获得给定 Perl 系统中安装的所有模块的信息。

强大的用户功能

还有几个功能可以帮助那些开发大型项目的开发人员,或者是常常需要在 Eclipse 中开发 Perl 应用程序的开发人员。

任务标记

假设需要分析刚下载的 RSS,但是您想要编写单独的函数来进行处理。目前还不想考虑实际编写这段代码。在标准编辑器和环境中,这可以用许多方式实现 —— 例如,在源代码中使用一种特殊的注释,以后要实际编写此处的代码时可以搜索并找到这个位置。

EPIC(和 Eclipse)支持这种功能。可以搜索单独的条目或代码段。但是,EPIC 和 Eclipse 通过支持特定的任务标记,扩展了这一功能。这些注释具有特定的格式。例如,在源代码中输入以下代码:

#TODO Write the function to parse the RSS raw code

如果打开 Tasks 视图(选择它或者通过 Window > Show View 菜单项目添加它),就会看到要做的任务列表中已经添加了一个任务(及其描述)。在图 13 中可以看到这个任务,包括源代码和结果视图。

图 13. 任务标记

572x322

 

Tasks 视图是特定于项目的,这意味着可以看到项目中所有文件中的任务标记及其描述,而不只是当前文件的标记。这很好地突出显示了整个项目中的任务。

标准安装有两个可识别的标记:TODO 和 TASK。可以使用 EPIC的Task Tags 首选项配置更多的任务标记。首选项窗口见图 14。

图 14. 设置任务标记首选项

要创建新的任务标记:点击 New 并指定识别为标记的文本。顺便说一句,因为标记属于注释,您应该知道 Control-/(Control 斜线)注释当前行,Control-\ 取消某一行的注释。如果选择多行代码,那么这些操作对每一行进行注释或取消注释。

代码格式化

对 Perl 代码进行格式化有许多方式,保持格式正确可以大大改进代码的可读性。EPIC 会对代码的某些元素自动地进行格式化。在前面讨论对括号和引号进行自动补全时,您已经看到了 EPIC 自动调整不同元素布局的方式。还可以按下 Control-Shift-F 或者从 Source 菜单中选择 Format,让 EPIC 将代码重新格式化为可读格式。

准确的格式取决于首选项,这是通过 Eclipse 首选项中的 Source Formatting 面板设置的(见图 15)。格式化由 Perltidy 执行,它读取代码并根据某些标准对代码进行重新格式化(这些标准的细节见 O'Reilly的Programming Perl)。

图 15. 设置源代码格式化首选项

 

主要的选项按照以下方式影响格式化。“Cuddle else” 改变 else 语句的行为,见清单 1:

清单 1. else 语句

}
else {
to
} else {

“The opening brace on the new line” 让 Perltidy 将代码块的起始花括号放在新行上。清单 2 给出一个示例。

清单 2. 让 Perltidy 将代码块的花括号放在新行上

if ($a == 1) {
变成
if ($a == 1)
{

“Lining up parentheses” 确保在括号跨多行时将括号对齐。最后,“Swallow optional blank lines” 删除没有意义的任何空行。例如,注释前面的空行保留,但是后面的空行不保留。主要代码块(例如函数、循环和测试)之间的空行保留。

通过在执行 Perltidy 时调用的命令行上添加参数,可以配置任何其他选项。

重构

代码重构就是调整代码,但是不改变它的行为。在 EPIC 中,重构可以将一个代码块转换为函数,让代码的任何部分都可以访问此功能。EPIC 将提取代码块所需的输入变量,判断输出,并将它们分别转换为参数和返回值。为了使用重构,我们来考虑用来下载并将 RSS 提要 URL 分析为 RSS 对象的代码段(见清单 3)。

清单 3. 用来下载并将 RSS 提要 URL 分析为 RSS 对象的代码段

foreach my $feed ( sort keys %{$feeds} )
{
   my $response = $ua->get( $feeds->{$feed} );
   if ( $response->is_success )
   {
     my $rss = XML::RSS->new();
     $rss->parse( $response->{_content} );
   }
}

如果选择这个 foreach 循环的内容(整个块的内容,不包括 foreach 语句和括号),右击并选择 Refactor > Extract subroutine,EPIC 就会将此代码转换为以下代码(见清单 4):

清单 4. 提取子例程

foreach my $feed ( sort keys %{$feeds} )
{
   my ($response, $rss) = parse_rss_fromurl ($feeds, $ua, $feed);
}
  
sub parse_rss_fromurl
{
   my $feeds  = shift;
   my $ua    = shift;
   my $feed   = shift;
   my $response = $ua->get( $feeds->{$feed} );
   if ( $response->is_success )
   {
     my $rss = XML::RSS->new();
     $rss->parse( $response->{_content} );
   }
   return ( $response, $rss );
}

可以看到,EPIC 已经判断出了新的子例程需要的变量以及返回值。代码的实际作用没有变,但是整个代码块已经重构为一个新的子例程。还要注意,foreach 循环现在包含必要的子例程调用和参数。

 

模板和模块

许多源代码基于相似的元素。例如,尽管子例程可能不同,但是基本内容是相同的:需要同样的关键词、括号和用于提取子例程参数的相同结构。模板使开发人员可以更快地将这一结构插入代码。

创建模板

模板是通过 Eclipse 首选项中的 Templates 面板定义的。模板就是一个可以快速且轻松地插入源代码中的代码段。

要创建新模板

打开 Preferences 窗口并从 Perl EPIC 部分选择 Templates。应该会看到与图 16 相似的首选项面板。

图 16. Template 首选项

点击 New 按钮,会看到图 17 所示的窗口。

图 17. 创建新模板

467x291

 

输入模板的名称。尽量只使用一个单词,因为在插入代码时将使用这个名称。

输入对代码的描述。

输入模板的代码。在这里输入的代码在插入模板时会原样插入,就像复制和粘贴了此内容一样。

点击 OK 结束模板定义。

点击 OK 关闭 Preferences 窗口。

要实际使用模板,在代码中输入模板名并按 Control-Space。输入的模板代码就会插入在当前位置,替换掉指定的模板名。

尽管这样的模板是有用的,但是仍然必须进入模板代码并设置某些元素。例如,在 for 循环中,仍然必须编辑和输入循环变量、测试值和递增值的名称。可以使用动态模板进一步简化这个过程。

创建动态模板

创建动态模板与创建标准模板很相似。区别在于输入定义中的代码。EPIC 支持在模板中的变量 表示。这些变量与代码中的变量没有任何关系,它们让开发人员可以用简单的元素定制插入的代码。

例如,在前面给出的 for 循环示例中,可能将以下代码输入模板:

for($i;$i<10;$i++)
{
}

但是 $i 可能不是您要使用的变量,10 也可能不是要进行比较的值。通过使用动态模板,可以定义一个变量元素,在插入模板时可以轻松地替换它。为此,使用 ${varname} 形式指定模板变量的名称。如果多次使用同一个名称,那么只需输入变量一次,而且可以在一个模板中创建多个模板变量。使用两个美元符($$)将美元符插入模板。

例如,可以将 for 循环定义改为:

for($$${var};$$${var}<=${maxvalue};$$${var}++)
{
}

现在,在插入模板时,光标自动定位在第一个 ${var} 上。输入变量名,每处 ${var} 都会替换为变量名。按 Tab,光标将移动到 ${maxvalue}。

这只是模板的众多优秀功能的一部分,通过这些示例您应该会体会到模板系统和变量替换是多么灵活。

结束语

EPIC 插件为编写和开发 Perl 代码提供了一个完整的环境。EPIC 采用了许多方式,主要是帮助开发人员编辑、创建和格式化代码。尽管 EPIC 并不帮助实际生成代码(模板只提供了非常初级的代码生成),但是它使开发人员能够更容易地在代码中移动,自动格式化和元素自动补全可以减少代码输入量。

 

引用:

 

http://www.shangxueba.com/jingyan/88606.html

 

分享到:
评论

相关推荐

    lucene例子

    它可以用于为各种应用程序构建搜索功能,比如电子邮件客户端、邮件列表、Web 搜索、数据库搜索等等。Wikipedia、TheServerSide、jGuru 和 LinkedIn 等网站都使用了 Lucene。 Lucene 还为 Eclipse IDE、Nutch(著名的...

    yafra:源代码示例存储库-apache cayenne,eclipse rcp,gwt,ejb,perl,python,bash,oracle,mysql,ms sql server,wicket,cxf,restful-apache source code

    亚夫拉 README首先! 另一个框架(YAFRA)提供了基于工作样本的开发,构建和部署环境,这些样本...自定义您的分叉代码并删除不需要的部分并创建您的应用程序 在以下位置阅读有关yafra的更多信息: 如果需要可以举票

    se_15000103_win_full_with_crack_sKe.part2

    Visual SlickEdit 现在支持C++代码重构以及使用Swing/AWT的Java GUI构建,.NET的CLR应用调试等。 Visual SlickEdit支持宏语言,有强大的定制功能,可以模拟为VI、CodeWright和Emacs,并可以和各种源代码控制软件...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java开源包8

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包1

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包11

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包2

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包3

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包6

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包5

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包10

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包4

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包7

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包9

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包101

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    Java资源包01

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

Global site tag (gtag.js) - Google Analytics