Java IDE漫谈(一)

漫谈 CTK 同样地,在使用 CTK 时,很多小伙伴一定也存在诸多疑问:为什么 CTK Plugin Framework 要借鉴 OSGi?为什么 CTK 要基于 Qt 实现?CTK Plugin Framework 的架构策略是什么?使用 CTK Plugin Framework 的好处是什么?为什么 CTK 不流行? 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Cafe,VJ ,JBuilder,VAJ,???(WSWB,Eclipse?)

董向辉 (dracodoc@21cn.com)
中科院自动化所人工智能实验室博士生
2001 年 12 月

本文主要向还不太了解VisualAge for Java的人介绍它的特点,另外在本系列的下 一篇文章中将介绍刚刚起步不久的,全新的,大有希望的 Eclipse and/or IBM WebSphere Studio Workbench(一般简称为WSWB)。 前者在国际上有很大的影响,有一大批铁杆的用户,尤其是企业用户。 但是在国内则了解的人不多,用的人也很少。后者就更少有人知道了,有一些在 用VisualAge for Java,却还在找4.0,不知道以后已经没有VisualAge for Java 的后续版本...

对于现代的程序员,开发工具起着越来越重要的作用。尤其在java领域,各种工具和厂商之间的关系十分复杂,用户之间对开发工具的争论是一个永恒的话题。

在新闻组和BBS上常常看到有人问什么开发工具最好,经常就会有人对新手说,就用 JDK 和notepad (ultraedit,editplus,...);也有许多有C,C 经验的人上来就找Visual J ;还有许多人对Borland JBuilder情有独钟,加上一些通用的集成开发环境比如Visual Slick Edit,一些基于java的比较小的开发环境,比如Kawa,JCreator,IntelliJ...更不用提UNIX环境下那些狂热的EMACS,VI的爱好者了...

然而我最喜欢的还是VisualAgeJava,以及现在的 Eclipse and/or IBM WebSphere Studio Workbench。

究竟要用什么工具,肯定是没有绝对答案的,不同的人需求不同,习惯不同。

有的人喜欢用JDK和文本编辑器,是因为喜欢感觉到真正的代码,知道“背后发生的事情”,对他们而言,可视化编程工具生成的代码绝对是垃圾,不利于自己的修改和维护。但是他们并不是排斥工具,要不然,也不会把notepad换成ultraedit,editplus,乃至更强大的工具,远远不是一个文本编辑器那么简单。

至于使用Visual J ,Borland JBuilder,也很明显,界面和习惯都很熟悉,很快就知道怎么回事,可以上手。但是其实Java世界有它自己的特点。

最初的Java IDE大概是Symantec公司的Visual Cafe,由于其编译器速度很快,尤其出现的最早,很快占领了大部分的市场份额,现在虽然已经大不如前,但还是有其特点的,尤其是国际化支持方面比较突出。

此后就是IDE领域的老牌公司Borland的JBuilder,早期的还比较粗糙,但是随着版本的不断更新,集成了许多类库和组件,以及Borland一向的良好声誉,成为当前最普遍的IDE之一。

Microsoft的VisualStudio在C 领域是绝对的老大,在Java领域却不能有同样的风光,其实从微软公司的战略角度,这点是很明显的。从较早的Visual J 1.0到比较稳定的1.1,以及号称专门从Borland挖来的Delphi总设计师亲自设计的Visual J 6.0,它始终处于一个尴尬的位置。后来更因为被Sun起诉,被迫最终修改。

不可能从Microsoft得到Java的开发工具,这是很明显的。

有的人第一次用VisualAgeJava,可能会不太习惯:怎么界面这么土?(VisualAgeJava的版本更新很少带来界面上的变化,没有其他软件花哨,其实可以说是优点。不过,Eclipse or WSWB的界面可就完全不同了,不仅很漂亮,而且有很精心的设计,而不是照搬习惯的方式)怎么没有我熟悉的菜单结构?...

VisualAgeJava有很多独特的地方,需要一个熟悉和适应过程。

VAJ用自己的二进制格式文件(资源库)作为基本的存储模型。

对于开发者而言,完全不用考虑文件和路径的所有问题。所面对的直接就是package,class,method......,同时在显示上也是以类、方法等单元作为对象,只显示选中的元素(直到近期的版本才出现了full class view),这非常符合面向对象的概念,帮助开发者用面向对象的概念和模型来考虑问题。

当然,有人可以说,不接触文件,不搞清楚文件,路径,包的关系,就没有了解Java中这部分真正的内部机制。但是,即使是已经充分了解的有经验的程序员,也难免在这个问题上犯错误或者耗费不少时间和精力(因为牵涉的因素很多),对于初学者,这一点就更重要了。

内置的版本控制。正是因为使用了资源库,在VAJ里面版本控制的功能十分强大。每一次存盘的状态都被保存,可以很容易地回溯和比较。任何时候想冻结代码的状态时,可以将一个版本版本化。这样将使特定版本成为只读的,并可以命名。编程时完全可以放心保存和修改,对于开发周期内的一些特殊点可以方便地留下快照。

增量编译。在VisualAgeJava中没有显式的编译过程,每次存盘的同时就进行了增量编译,有问题立刻标出。这不仅节省了编译的时间,省去了一个步骤,也强迫开发者每一阶段都要保证正确,这种step by step,在正确代码基础上继续工作的增量式开发是一个很好的习惯,比上来就写很长一段程序,编译运行,然后再慢慢地调试和寻找错误,要高效得多。最好的调试方法就是避免错误。

调试器。VisualAgeJava用的是IBM的Java虚拟机,使它具有独特的hot-link功能,可以把修改后的代码编译后连接到正在运行的程序中。甚至有人说,他就在debugger里面编写程序,程序一直在运行,而不用像有的人那样,必须写大段大段的System.out.println来观测程序运行状态。

还有一个很好的例子:Apache Tomcat Servlet and JSP Development with VisualAge for Java

http://www7.software.ibm.com/vad.nsf/Data/Document2389?OpenDocument&p=1&BCT=1&Footer=1

这篇文章介绍了如何在VisualAgeJava使用Tomcat(3.5以后VisualAgeJava直接加入了JSP开发环境,不需要使用这篇文章的方法了,但是其机理是一样的。)。VisualAgeJava有两个独特的核心技术,特别适合于开发servlets和JSP:

模拟多个虚拟机实例

增量编译和将代码“hot-linking”进运行中的程序。

servlet的生命周期导致通常的开发必须停止并重新启动Web Server以更新servlet类或者重新装载一个JSP调用的Java组件。在开发过程中需要非常频繁地修改servlet或者JSP的源码,那么使用一个Web Server或者某个“ServletRunner”就是非常麻烦的事情,特别是当需要调试一个只在servlet已经运行一段时间后才发生的问题,或者一个很长的循环中的某个部分时。

幸运的是,在VisualAge for Java中,当改变servlet中的一个方法时,VisualAge for Java仅仅增量编译这个改变了的方法而非整个类,然后把它hot-link进正在运行的程序。

增量编译很重要,但是同等重要的是不必重新启动正在调试的程序,不必重新创造引起正在调试问题的程序状态,这带来的效率提高是惊人的。使用VisualAge for Java,你可以修改运行中的servlet,bean,tag或者EJB代码,不用不停地终止和重新启动Web server.此外,在server运行时你就有整个开发环境的所有特性可供利用。更加强大的是,即使你改变的bean或者其他类是从servlet或者JSP中调用的(例如,对于在另一个模拟的Java虚拟机实例内的container里运行的EJB),也不需要启动并停止server。

另外有独立的IBM distributed debugger,不过我没有用过,无法评论。

代码片断编辑测试窗scrapbook。其实只是简单的文本文件,可以任意地做笔记,写编程的思路。更重要的是测试代码片段的功能。想到一个实现方法,可以立刻写一小段代码来进行测试,不用写完整的程序,只要设定代码片段的运行环境就可以立刻看到结果。 这个小小的,简单的工具对于开发效率的提高是非常显著的。

企业版对团队开发有非常完善的支持。这方面我实际使用不多,就不多介绍了,有兴趣的可以参考相关的网站。值得一提的是IBM提供了很多网上资源,文档,教程,多媒体教程,新闻组,这些是非常重要的,后面将给出一个简要的列表。

附注:

有一些比较小的地方,初次使用者可能不习惯或者不容易发现,这里简要地提一下。

VAJ的窗口缺省是上下横排的,不习惯的话可以在窗口-翻转方向中改过来。不过这也是因为VAJ的method view特点,每次只显示当前选中的元素,而一个方法是不应该太长的。

代码辅助自动完成:缺省的Ctrl-space可能与输入法冲突,可以使用Ctrl-L。

支持模板,比如输入for按Ctrl-L就可以提供for(int i=0;i< ; i ) {} 这样的模板。也可以自定义,有人把System.out.println()自定义为sop。(Eclipse中缺省定义为stdout)

自动格式化ctrl-w,这是很方便的特性,不用自己为换行和对齐操心了。

选中一段代码ctrl-/,加注释,ctrl-/去注释。因为java注释不能嵌套,对于包含注释的代码要注释掉比较麻烦,现在则很简单。

在编辑窗里Ctril-i增量搜索。

建议在窗口-选项里把常规里设上在同一浏览器中打开项目,类似于浏览器那样,可以back和forward。

有的工具栏图标上有小三角,有的初学者可能看到应该有下拉列表,但是就是点不出来。事实上必须有窗口历史的情况下才是可用的,另外要点右键来选择后退或前进到列表中的某一项。

帮助系统是完全基于浏览器的,实际上使用了一个自己的小Web server。有的人总是无法启动帮助,必须注意启动VAJ的时候不能启动程序目录下的ide.exe,而要使用安装程序创建的快捷方式(也就是ivjenv.bat)。

在IDE中选中Java关键字按F1,可以查到相应的帮助,但是只限于java关键字和系统包。

关于资源库和工作区:
原来的台湾DW中有一篇文章,《在VisualAge for Java管理原始資料碼》,详细讲述了资源库和工作区的机制,但是现在可以搜到文章,但是没有连接了。这里还有一份
http://www.cnpedia.com/update no4/056.htm

英文原文
http://www7.software.ibm.com/vad.nsf/Data/Document2333?OpenDocument&p=1&BCT=3&Footer=1

可以通过使用-i参数和相应INI文件使用不同的工作区和资源库,这样可以有不同的工作模式,相互隔离,在有些时候是非常有用的。具体参考上面的文章

如果需要干净的workspace文件来恢复,VAJ的安装光盘第二张上有一个备份,instantiations公司的网站则提供了各种版本的:
http://www.instantiations.com/vaj/files/default.htm

资源库文件在长期使用后可能会变的很大(新闻组上有人说他的资源库有2G?!),对其所在磁盘进行碎片整理有可能可以带来不少性能的提高。

附加工具
使用VAJ,就不能不提VA Assist。Instantiations公司(http://www.instantiations.com/)一直在开发VAJ的附加工具,目前主要有

相关资源:

关于作者
董向辉,中科院自动化所人工智能实验室博士生。研究方向为演化计算和复杂性科学。E-mail:dracodoc@21cn.com
手把手教你学GPU的KMD专栏--3.1 设备初始化流程深度解析 本文深入解析了KMD(内核模式驱动)设备初始化流程,这是GPU驱动开发最基础且关键的环节。初始化流程包括6个核心阶段:KMD模块加载、PCIe设备探测匹配、GPU硬件初始化、显存分配映射、中断系统配置和设备注册。每个阶段都有详细步骤解析,涉及关键数据结构和错误处理机制。文章还分析了常见问题(驱动加载失败、显存分配失败、中断配置失败)的解决方案,并指出未来趋势将向动态初始化、安全增强和AI优化方向发展。正确高效的初始化流程是确保GPU被操作系统安全使用的前提,也是后续内存管理、任务调度等功能的基础。 阅读详情

相关推荐

ubuntu安装英伟达显卡驱动后wifi消失解决方法

ubuntu安装英伟达显卡驱动后(比如4090和3090等),会把wifi和蓝牙驱动去除,导致wifi无法连接。需要重新下载驱动安装。

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 3905

J2ME--丰富多彩的领域中生机勃勃的技术

 

iwaver's space 1143

2021秋-北邮计算机导论期末考试(BUPT)

2021秋-北邮计算机导论期末考试(BUPT) 难度较低适合新手练习

weixin_73985779的博客 1500

精彩文章推荐:漫谈IDE

文/张凯峰 上个月,Ajax网站AjaxLine统计发布了30款最受欢迎的Eclipse插件,这次遴选出的插件,范围涉及Python、LAMP、Web、Emacs、SQL、Log、UML和IDE增强等诸多方面,琳琅满目的Eclipse插件体现出插件机制在Eclipse中优异的扩展性能,以及Eclipse作为IDE在开发者心目中的地位。 众所周知,Eclipse是最初作为JavaIDE发布的...

《程序员》官方BLOG 548

将ue4程序嵌入qt界面显示

需求:将ue4程序嵌入qt界面显示 思路:通过使用 windowsAPI 对ue4窗口进行设置跟随qt界面以及活动窗口时的位置层序设置

weixin_44342705的博客 5847

【gridsample】地平线征程6芯片中gridsample算子的优化与部署实践

本文详细介绍了地平线征程6芯片中gridsample算子的优化与部署实践,重点探讨了PTQ和QAT量化方案在BEV感知任务中的应用。通过双线性插值优化、内存布局调整和混合精度配置等关键技术,显著提升了算子在自动驾驶场景下的性能和精度,为开发者提供了实用的部署指南和调优建议。

zero1的博客 1021

漫谈Java中的互斥同步

漫谈Java中的互斥同步 互斥同步(Mutual Exclusion & Synchronization)是最常见的一种并发正确性保证手段,同步是指在多个线程并发访问共享数据时,保证共享数据在同一时刻只被一条(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section)、互斥量(Mutex)和信号量(Sempahore)都是主要的互斥实现方式。因

木小草 专栏 3352

从理论到代码:手把手教你用Matlab复现MMC的HSS阻抗模型(附避坑指南)

本文详细介绍了如何使用Matlab复现MMC的HSS阻抗模型,涵盖谐波状态空间(HSS)理论、代码实现步骤及常见问题解决方案。通过谐波线性化和序阻抗建模技术,帮助工程师准确分析MMC的阻抗特性,并提供避坑指南以解决矩阵维度错误、收敛性问题和频域转换陷阱等难点。

weixin_42561040的博客 358

Java 小型数据库漫谈

开发学习过程中使用的java小型数据库总结:Derby HSQL H2Database BerkeleyDB-java-edition

New World 5082

实验六 有源滤波器

实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路

胡毛毛的博客 1万+

ZYNQ GP总线实现PS与PL交互

3,完成 ZYNQ7 Processing System 的配置更改后,回到 Diagram 界面中,可以看到新出现了名为 M_AXI_GP0_ACLK、M_AXI_GP0 和 FCLK_CLK0 的接口,下面我们要对这些接口进行连接或引出。此处的偏移量,AXI的相邻寄存器偏移量相差4个字节,默认slv_reg0的偏移量是0,可以推导出slv_reg1,slv_reg2的偏移量分别为4和8,这里只用到了slv_reg0,所以偏移量为0。当然了,窗口数量的增加,势必会使得单个窗口的采样深度变小。

wangjie36的博客 7094

怎样学习java,漫谈java学习之路

附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全: 书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版) ②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版) ③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版) ④【Web前端】从HT...

黑技的博客 309

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)

随着新零售和智能仓储的快速发展,商品识别技术成为计算机视觉领域的重要研究方向。本文详细介绍了基于YOLO系列算法的商品识别系统的完整实现方案,涵盖算法原理、数据集构建、模型训练、系统集成和可视化界面开发。通过对比YOLOv5到YOLOv8各版本性能差异,我们构建了一个高效、准确且用户友好的商品识别系统,并提供完整的代码实现。

YOLO 288

开发语言漫谈-kotlin

Sun公司创造了Java和标准库,但是拿不出像样的IDE。这点Sun公司不如微软,微软的C#的开发环境简单好用,降低了开发者门槛。Sun的母公司Oracle也这德行,这么强大的数据库系统,却没有个好的客户端工具。程序的运行环境包括移动设备、服务端、浏览器,服务器又分为window、linux等,不同的环境使用不同的开发语言。kotlin从各个方面都扩展和超越了Java,但毕竟是新兴事务,推广和流行还需要时间考验。至此我们介绍了C的庞大家族C、C++、C#、Java、JavaScript、kotlin。

wangbing1125的博客 699

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

漫谈金蝶Apusic Studio(一)

对于一个软件开发人员来讲,Studio 可比喻为战士驰骋战场的兵器,恰如兵器在现代战争中地位日益重要一样,Studio在现代软件开发中扮演的角色也日益重要。 在集成开发环境(IDE)发展的早期,大家的兵器都很原始。记得我95年刚接触C语言的时候,已经有了Turbo C2.0,在那个还没有太多图形化开发的时代,TC能够很好把.c和.h文件组织起来,并提供编译支持,断点调试和及时帮助。TC使用起...

cloudxman 283

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

样学习java,漫谈java学习之路

附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全: 书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版) ②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版) ③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版) ④【Web前端】从HT...

黑技的博客 191

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java drawpolygon_【编程漫谈】用JAVA画多边形

一门语言只要带图形库就可以编程画图了,用JAVA画图有两种方式,一是在内存中画好然后生成图片,就可以看到画图的效果了。另一个就是在窗口界面上直接画,可以实时看到程序的运行效果。刚开始学编程的时候,我加入了一个JAVA编程的BBS,里边有些大神会带着新手学,有一次大神出一道,叫让画一个6边型。我想这不是很难吧,JAVA的图形库比较容易,有一个Graphics类,这个类在applet或者swing的某...

weixin_35716518的博客 1551

怎样学习java,漫谈java学习之路(转~~~~)

java - 近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如“屠龙刀”、“倚天剑”。 java是个平台,我只想说说我对学好java的一点看法,希望对初学者有所帮助。 1. 思考一下 学习java之前,先别急,静下心来好好想想: 1)你对学习java是否有兴趣? 2)你是否能静下心来坚持不懈地学习? 嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对java感兴趣、

javazhuanzai的专栏 436

【软件创新实验室2021年寒假集训】Java技术培训——Java前置知识学习

实验室集训已经有很多次了,可是并没有什么资料所留,所以我想把我们要讲的东西以博客形式记之,并收录为一个系列。不仅是为讲课之便,更是为后来者留下珍贵的资料以作参考。我希望带给大家的不仅是知识上的提升,更是视野上的拓展,思考上的提升,以及解决问题能力的提升。我认为只有学会这些技能,我们才能在这条道路上走的更远。

风过孤屿,山海自成诗行。 2567

漫谈JavaFX

从接触软件工程到现在,我依次使用过C/Cpp/Java/Php/Python/JavaScript等编程语言,也使用过它们的一些工程化的框架,如Java系的Spring,Js系的Vue和React。因为机缘巧合,我对Java接触的更多一点,用Spring写过Web,用Jsoup写过爬虫,用Swing写过桌面,用Netty写过IM,恰好最近有一个开发桌面端工具的小需求,所以就试用了一把号称next generation client application platform for desktop, mobi

王星星 935

Java漫谈(二)

类名     Java编译器的设计与java源代码的语法结构是相辅相成的,先有语法,再有编译器。大家都知道,java是以类为单位进行组织的,类是java对世界的抽象描述,Java程序的运行其实就是多个类之间的相互调用。表现在源码上,java的语法规定,用class关键字声明一个类,如下所示: class Demo { public static void main(String[] arg...

孟帅的成长博客 569

[转载]漫谈Hibernate的前世今生

漫谈Hibernate的前世今生Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同 时不必考虑如何把它们从神秘的数据库表中取出(或放回到数...

congji3817的博客 181

漫谈Hibernate的前世今生

Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。  历史与背景  大多数应用程序都需要处理数据。Java应用程序运行时,往往把数据封装为相互连接的对象网络

zaowei21的专栏 821

java窗口画多边形_【编程漫谈】用JAVA画多边形

一门语言只要带图形库就可以编程画图了,用JAVA画图有两种方式,一是在内存中画好然后生成图片,就可以看到画图的效果了。另一个就是在窗口界面上直接画,可以实时看到程序的运行效果。刚开始学编程的时候,我加入了一个JAVA编程的BBS,里边有些大神会带着新手学,有一次大神出一道,叫让画一个6边型。我想这不是很难吧,JAVA的图形库比较容易,有一个Graphics类,这个类在applet或者swing的某...

weixin_32369749的博客 328
上一篇: 上海关注无线Java
下一篇: JSP/Servlet 中的汉字编码问题
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值