符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
import java.awt.*;
10年积累的成都做网站、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有泗洪免费网站建设让你可以放心的选择与我们合作。
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class Counter extends Frame
{
//声明三个面板的布局
GridLayout gl1,gl2,gl3;
Panel p0,p1,p2,p3;
JTextField tf1;
TextField tf2;
Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
StringBuffer str;//显示屏所显示的字符串
double x,y;//x和y都是运算数
int z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"
static double m;//记忆的数字
public Counter()
{
gl1=new GridLayout(1,4,10,0);//实例化三个面板的布局
gl2=new GridLayout(4,1,0,15);
gl3=new GridLayout(4,5,10,15);
tf1=new JTextField(27);//显示屏
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0");
tf2=new TextField(10);//显示记忆的索引值
tf2.setEditable(false);
//实例化所有按钮、设置其前景色并注册监听器
b0=new Button("Backspace");
b0.setForeground(Color.red);
b0.addActionListener(new Bt());
b1=new Button("CE");
b1.setForeground(Color.red);
b1.addActionListener(new Bt());
b2=new Button("C");
b2.setForeground(Color.red);
b2.addActionListener(new Bt());
b3=new Button("MC");
b3.setForeground(Color.red);
b3.addActionListener(new Bt());
b4=new Button("MR");
b4.setForeground(Color.red);
b4.addActionListener(new Bt());
b5=new Button("MS");
b5.setForeground(Color.red);
b5.addActionListener(new Bt());
b6=new Button("M+");
b6.setForeground(Color.red);
b6.addActionListener(new Bt());
b7=new Button("7");
b7.setForeground(Color.blue);
b7.addActionListener(new Bt());
b8=new Button("8");
b8.setForeground(Color.blue);
b8.addActionListener(new Bt());
b9=new Button("9");
b9.setForeground(Color.blue);
b9.addActionListener(new Bt());
b10=new Button("/");
b10.setForeground(Color.red);
b10.addActionListener(new Bt());
b11=new Button("sqrt");
b11.setForeground(Color.blue);
b11.addActionListener(new Bt());
b12=new Button("4");
b12.setForeground(Color.blue);
b12.addActionListener(new Bt());
b13=new Button("5");
b13.setForeground(Color.blue);
b13.addActionListener(new Bt());
b14=new Button("6");
b14.setForeground(Color.blue);
b14.addActionListener(new Bt());
b15=new Button("*");
b15.setForeground(Color.red);
b15.addActionListener(new Bt());
b16=new Button("%");
b16.setForeground(Color.blue);
b16.addActionListener(new Bt());
b17=new Button("1");
b17.setForeground(Color.blue);
b17.addActionListener(new Bt());
b18=new Button("2");
b18.setForeground(Color.blue);
b18.addActionListener(new Bt());
b19=new Button("3");
b19.setForeground(Color.blue);
b19.addActionListener(new Bt());
b20=new Button("-");
b20.setForeground(Color.red);
b20.addActionListener(new Bt());
b21=new Button("1/X");
b21.setForeground(Color.blue);
b21.addActionListener(new Bt());
b22=new Button("0");
b22.setForeground(Color.blue);
b22.addActionListener(new Bt());
b23=new Button("+/-");
b23.setForeground(Color.blue);
b23.addActionListener(new Bt());
b24=new Button(".");
b24.setForeground(Color.blue);
b24.addActionListener(new Bt());
b25=new Button("+");
b25.setForeground(Color.red);
b25.addActionListener(new Bt());
b26=new Button("=");
b26.setForeground(Color.red);
b26.addActionListener(new Bt());
//实例化四个面板
p0=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
//创建一个空字符串缓冲区
str=new StringBuffer();
//添加面板p0中的组件和设置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的组件和设置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的组件并设置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的组件并设置其在框架中的位置和大小
p3.setLayout(gl3);//设置p3的布局
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(b10);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p3.add(b14);
p3.add(b15);
p3.add(b16);
p3.add(b17);
p3.add(b18);
p3.add(b19);
p3.add(b20);
p3.add(b21);
p3.add(b22);
p3.add(b23);
p3.add(b24);
p3.add(b25);
p3.add(b26);
p3.setBounds(60,110,250,150);
//设置框架中的布局为空布局并添加4个面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止调整框架的大小
//匿名类关闭窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e1)
{
System.exit(0);
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
//构造监听器
class Bt implements ActionListener
{
public void actionPerformed(ActionEvent e2)
{
try{
if(e2.getSource()==b1)//选择"CE"清零
{
tf1.setText("0");//把显示屏清零
str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数
}
else if(e2.getSource()==b2)//选择"C"清零
{
tf1.setText("0");//把显示屏清零
str.setLength(0);
}
else if(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(-x));
}
else if(e2.getSource()==b25)//单击加号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);//清空缓冲区以便接收新的另一个运算数
y=0d;
z=0;
}
else if(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
else if(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
else if(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=3;
}
else if(e2.getSource()==b26)//单击等号按钮输出计算结果
{
str.setLength(0);
switch(z)
{
case 0 : tf1.setText(""+(x+y));break;
case 1 : tf1.setText(""+(x-y));break;
case 2 : tf1.setText(""+(x*y));break;
case 3 : tf1.setText(""+(x/y));break;
}
}
else if(e2.getSource()==b24)//单击"."按钮输入小数
{
if(tf1.getText().trim().indexOf(′.′)!=-1)//判断字符串中是否已经包含了小数点
{
}
else//如果没数点有小
{
if(tf1.getText().trim().equals("0"))//如果初时显示为0
{
str.setLength(0);
tf1.setText((str.append("0"+e2.getActionCommand())).toString());
}
else if(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
}
}
y=0d;
}
else if(e2.getSource()==b11)//求平方根
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText("数字格式异常");
if(x0)
tf1.setText("负数没有平方根");
else
tf1.setText(""+Math.sqrt(x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b16)//单击了"%"按钮
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(0.01*x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b21)//单击了"1/X"按钮
{
x=Double.parseDouble(tf1.getText().trim());
if(x==0)
{
tf1.setText("除数不能为零");
}
else
{
tf1.setText(""+(1/x));
}
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b3)//MC为清除内存
{
m=0d;
tf2.setText("");
str.setLength(0);
}
else if(e2.getSource()==b4)//MR为重新调用存储的数据
{
if(tf2.getText().trim()!="")//有记忆数字
{
tf1.setText(""+m);
}
}
else if(e2.getSource()==b5)//MS为存储显示的数据
{
m=Double.parseDouble(tf1.getText().trim());
tf2.setText("M");
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR
{
m=m+Double.parseDouble(tf1.getText().trim());
}
else//选择的是其他的按钮
{
if(e2.getSource()==b22)//如果选择的是"0"这个数字键
{
if(tf1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
else if(e2.getSource()==b0)//选择的是“BackSpace”按钮
{
if(!tf1.getText().trim().equals("0"))//如果显示屏显示的不是零
{
if(str.length()!=1)
{
tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常
}
else
{
tf1.setText("0");
str.setLength(0);
}
}
y=Double.parseDouble(tf1.getText().trim());
}
else//其他的数字键
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
}
catch(NumberFormatException e){
tf1.setText("数字格式异常");
}
catch(StringIndexOutOfBoundsException e){
tf1.setText("字符串索引越界");
}
}
}
public static void main(String args[])
{
new Counter();
}
}
jsp中写java代码成为scriptlet,写在%%之间就可以了。
Scriptlet是包含在%和%之间的Java代码,在Web容器处理JSP页面时执行,通常会产生输出,并将输出发送到客户的输出流里。Scriptlet除了不能定义类和方法、不能用import引入类外,可以包含任何有效的Java代码。(Java类在Jsp外部定义,可用page指令的import属性引入,也可以Java Bean的形式使用。Java中的方法必须在类内定义,但Jsp允许使用声明定义方法。窗体(GUI)设计代码在Jsp中无效)。
Scriptlet例程:
%@ page contentType="text/html; charset=gb2312" %
html
head
titleJSP基本语法/title
/head
body
h1Scriptlet示例页面/h1
table border="1"
caption乘法口诀表/caption
%-- 在网页中嵌入Java代码的主要方法 --%
%
for(int i=1; i=9; i++) {
int j=1;
//out是JSP的一个内部对象,print方法用于向客户端输出数据
out.println("tr");
for(; j=i; j++) {
out.print("td" + j + "*" + i + "=" + j*i + "/td");
}
for(;j=9;j++) {
out.print("td /td");
}
out.println("/tr");
}
%
/table
/body
/html
你好,我来为你解答:
常见的十四种Java开发工具的特点
1、JDK(JavaDevelopmentKit)Java开发工具集
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java(J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
2、JavaWorkshop
3、NetBeans与SunJavaStudio5
NetBeans是开放源码的Java集成开发环境(IDE),适用于各种客户机和Web应用。
SunJavaStudio是Sun公司最新发布的商用全功能JavaIDE,支持Solaris、Linux和Windows平台,适于创建和部署2层JavaWeb应用和n层J2EE应用的企业开发人员使用。NetBeans是业界第一款支持创新型Java开发的开放源码IDE。开发人员可以利用业界强大的开发工具来构建桌面、Web或移动应用。同时,通过NetBeans和开放的API的模块化结构,第三方能够非常轻松地扩展或集成NetBeans平台。NetBeans3.5.1主要针对一般Java软件的开发者,而JavaOneStudio5则主要针对企业做网络服务等应用的开发者。Sun不久还将推出ProjectRave,其目标是帮助企业的开发者进行软件开发。NetBeans3.5.1版本与其他开发工具相比,最大区别在于不仅能够开发各种台式机上的应用,而且可以用来开发网络服务方面的应用,可以开发基于J2ME的移动设备上的应用等。在NetBeans3.5.1基础上,Sun开发出了JavaOneStudio5,为用户提供了一个更加先进的企业编程环境。在新的JavaOneStudio5里有一个应用框架,开发者可以利用这些模块快速开发自己在网络服务方面的各种应用程序。
4、Borland的JBuilder
Jbuilder进入了Java集成开发环境的王国,它满足很多方面的应用,尤其是对于服务器方以及EJB开发者们来说。下面简单介绍一下Jbuilder的特点:
1)Jbuilder支持最新的Java技术,包括Applets、JSP/Servlets、JavaBean以及EJB(EnterpriseJavaBeans)的应用。
2)用户可以自动地生成基于后端数据库表的EJBJava类,Jbuilder同时还简化了EJB的自动部署功能.此外它还支持CORBA,相应的向导程序有助于用户全面地管理IDL(分布应用程序所必需的接口定义语言InterfaceDefinitionLanguage)和控制远程对象。
3)Jbuilder支持各种应用服务器。Jbuilder与InpriseApplicationServer紧密集成,同时支持WebLogicServer,支持EJB1.1和EJB2.0,可以快速开发J2EE的电子商务应用。
4)Jbuilder能用Servlet和JSP开发和调试动态Web应用。
5)利用Jbuilder可创建(没有专有代码和标记)纯Java2应用。由于Jbuilder是用纯Java语言编写的,其代码不含任何专属代码和标记,它支持最新的Java标准。
6)Jbuilder拥有专业化的图形调试介面,支持远程调试和多线程调试,调试器支持各种JDK版本,包括J2ME/J2SE/J2EE。JBuilder环境开发程序方便,它是纯的Java开发环境,适合企业的J2EE开发;缺点是往往一开始人们难于把握整个程序各部分之间的关系,对机器的硬件要求较高,比较吃内存,这时运行速度显得较慢。
5、Oracle的JDeveloper
Oracle9iJDeveloper(定为9.0版,最新为10g)为构建具有J2EE功能,XML和Webservices的复杂的,多层的Java应用程序提供了一个完全集成的开发环境。它为运用Oracle9i数据库和应用服务器的开发人员提供特殊的功能和增强性能,除此以外,它也有资格成为用于多种用途Java开发的一个强大的工具。
Oracle9iJDeveloper的主要特点如下:
①具有UML(UnifiedModelingLanguage,一体化建模语言)建模功能。可以将业务对象及e-business应用模型化。
②配备有高速Java调试器(Debuger)、内置Profiling工具、提高代码质量的工具“CodeCoach”等。
③支持SOAP(SimpleObjectAccessProtocol)“简单对象访问协议”、UDDI(UniversalDescription,DiscoveryandIntegration)“统一描述、发现和集成协议”
、WSDL(WebServicesDescriptionLanguage)“WEB服务描述语言”等Web服务标准。JDeveloper不仅仅是很好的Java编程工具,而且是OracleWeb服务的延伸,支持ApacheSOAP,以及9iAS,可扩充的环境和XML和WSDL语言紧密相关。Oracle9iJdeveloper完全利用Java编写,能够与以前的Oracle服务器软件以及其他厂商支持J2EE的应用服务器产品相兼容,而且在设计时着重针对Oracle9i,能够无缝化跨平台之间的应用开发,提供了业界第一个完整的、集成了J2EE和XML的开发环境,允许开发者快速开发可以通过Web、无线设备及语音界面访问的Web服务和交易应用,以往只能通过将传统Java编程技巧与最新模块化方式结合到一个单一集成的开发环境中之后才能完成J2EE应用开发生命周期管理的事实,从根本上得到改变。缺点就是对于初学者来说,较复杂,也比较难。
6、IBM的VisualAgeforJava
VisualAgeforJava是一个非常成熟的开发工具,它的特性以于IT开发者和业余的Java编程人员来说都是非常用有用的。它提供对可视化编程的广泛支持,支持利用CICS连接遗传大型机应用,支持EJB的开发应用,支持与Websphere的集成开发,方便的bean创建和良好的快速应用开发(RAD)支持和无文件式的文件处理。
IBM为建设Web站点所推出的WebSphereStudioAdvancedEdition及其包含的Visual
AgeforJavaProfessionalEdition软件已全面转向以Java为中心,这样,Java开发人员对WebSphere全套工具的感觉或许会好了许多。Studio所提供的工具有:Web站点管理、快速开发JDBC页向导程序、HTML编辑器和HTML语法检查等。这确实是个不错的HTML站点页面编辑环境。Studio和VisualAge集成度很高,菜单中提供了在两种软件包之间快速移动代码的选项。这就让使用Studio的Web页面设计人员和使用VisualAge的Java程序员
可以相互交换文件、协同工作。VisualAgeforJava支持团队开发,内置的代码库可以自动地根据用户做出改动而修改程序代码,这样就可以很方便地将目前代码和早期版本做出比较。与VisualAge紧密结合的WebsphereStudio本身并不提供源代码和版本管理的支持,它只是包含了一个内置文件锁定系统,当编辑项目的时候可以防止其他人对这些文件的错误修改,软件还支持诸如MicrosoftVisualSourceSafe这样的第三方源代码控制系统。VisualAgeforJava完全面向对象的程序设计思想使得开发程序非常快速、高效。你可以不编写任何代码就可以设计出一个典型的应用程序框架。VisualAgeforJava作为IBM电子商务解决方案其中产品之一,可以无缝地与其他IBM产品,如WebSphere、DB2融合,迅速完成从设计、开发到部署应用的整个过程。VisualAgeforJava独特的管理文件方式使其集成外部工具非常困难,你无法让VisualAgeforJava与其他工具一起联合开发应用。
7、BEA的WebLogicWorkshop
BEAWebLogicWorkshop是一个统一、简化、可扩展的开发环境,使所有的开发人员都能在BEAWebLogicEnterprisePlatform之上构建基于标准的企业级应用,从而提高了开发部门的生产力水平,加快了价值的实现。WebLogicWorkshop除了提供便捷的Web服务之外,它能够用于创建更多种类的应用。作为整个BEAWebLogicPlatform的开发环境。不管是创建门户应用、编写工作流、还是创建Web应用,Workshop8.1都可以帮助开发人员更快更好地完成。WebLogicWorkshop的主要特点如下:
①使J2EE开发切实可行,提高开发效率
BEAWebLogicWorkshop使开发人员远离J2EE内在的复杂性,集中精力专注业务逻辑,无须操心单调乏味的基础结构代码。这种创新意味着,已被企业验证的J2EE的强大功能,最终被大多数不熟悉Java和J2EE的应用开发人员所掌握,从而使IT部门的工作效率提高一个数量级。可视化设计器以及直观的概念,如事件、属性和控件等,实现了基于事件的开发。Workshop简化的程序设计模型,使开发人员不必掌握复杂的J2EEAPI和面向对象的程序设计原理。所有开发人员,包括J2EE专家和具有可视化和过程化语言技能的应用开发人员在内,都可以共同工作在BEAWebLogicEnterprisePlatform之上。Workshop的可视化开发环境,创建带有代码注释的标准Java文件,用来说明由运行时框架实施的企业级需求。J2EE和其他高级开发人员,借助功能强大的代码编辑功能,可以访问Java源代码,从而弥补了可视化设计器的不足。
②构建企业级应用
通过在可伸缩、安全可靠的企业级架构上实施各种应用,BEAWebLogicWorkshop大大降低了开发风险。而且,所有应用的创建都使用标准的J2EE组件,既保护了您的技术投资,又保持了最大的灵活性。BEAWebLogicWorkshop运行框架,是统一整个架构的汇聚层,使单一、简化的程序设计模型扩展到所有的BEAWebLogicEnterprisePlatform应用类型。通过解释设计时创建的注释代码,运行时框架可以实现必要的J2EE组件,并且提取出与J2EE应用开发有关的所有底层细节。
③降低IT复杂性BEAWebLogicWorkshop提供各种Java控件,使得与IT资源的连接更轻而易举。另外,在构建任何BEAWebLogicPlatform的应用中,Java控件不仅可扩展而且完全相同。这种强大、有效的方法能够:降低IT技术的复杂性,优化信息的可用性,推动包含"最佳业务方案"的可重用服务的开发,使开发人员能以更低的成本、更短的时间实现更大的产出。
利用BEAWebLogicWorkshop,任何开发人员都能以最大的生产效率,构建各种Web服务、Web应用、门户和集成项目。BEAWebLogicWorkshop是BEA的产品战略核心,它帮助客户接触和利用面向服务架构(SOA)的强大功能。BEAWeblogicWorkshop8.1极大简化了当前实际企业集成环境中企业级应用和服务的构建,并成为全面支持关键企业级应用(如异步、真正松耦合和粗粒度消息传送等)的自然选择。它的缺点就是过于复杂,对于初学者来说,理解起来较为困难。
8、WebGain的VisualCafeforJavaVisualCafe是只能在Symantec公司的Java虚拟机、Netscape公司的Java虚拟机和Microsoft虚拟机上工作的调试器。这对于开发者来讲是一个重要的特性,因为用户开发的Java代码中的许多软件bug就可能中会在某种特定的虚拟机上起作用。在修改后进行编译基继续进行调试时,VisualCafe会自动将文件存盘,使用VisualCafe创建的原生应用具有许多特点。除了明显的速度提高之外,Symantec使类库的二进制方式比正常的JDK小VisualCafe为所指定的关系自动生成或更新必要的Java代码。利用VisualCafe,用户可以从一个标准对象数据库中集合完整的Java应用程序和Applet,而不必再编写源代码。VisualCafe还提供了一个扩充的源代码开发工具集。VisualCafe综合了Java软件的可视化源程序开发工具,它允许开发人员在可视化视图和源视图之间进行有效地转换。在可视化视图中进行的修改立即反映在源代码中。对源代码的改变自动更新可视化视图。VisualCafe具有许多源文件方面的特性,如全局检索和替换。绝大多数Java开发工具的文献的问题在于简单地挨个介绍开发工具的每部分组件,但用户在开应用时还需要一个面向任务的手册,利用这个手册你可以不必知道工具每一部分的特定功能就可以开始创建自己的应用。VisualCafe提供了非常全面的用户指南,它对最开始的安装到创建第一个Java应用和Applet都提供了全面的帮助,VisualCafe将自动生成所指明关系的必要Java代码。VisualCafe可以在Windows95和WindowsNT平台下运行,Symantec公司为Java开发工作提供一个在Macintosh操作系统下可以运行的RAD工具。VisualCafe编译器速度很快,在国际化支持方面比较突出;缺点就是对于初学者来说,较复杂,也比较难。
9、Macromedia的JRUN
Macromedia公司的JRun是一个具有最广阔适用性的Java引擎,用于开发及实施由JavaServlets和JavaServerPages编写的服务器端Java应用。JRun是第一个完全支持JSP1.0规格书的商业化产品,全球有超过80,000名开发人员使用JRun在他们已有的Web服务器上添加服务器端Java的功能。其中Web服务器包括了MicrosoftIIS,NetscapeEnterpriseServer,Apache等。JRun是开发实施服务器端Java的先进引擎。如果我们希望在我们的Web应用中添加服务器端Java功能,那么JRun将成为我们的正确选择。JRun目前有3个版本,它是第一个支持JavaServerPages(JSP)规格书1.0的商业化产品。JSP是一种强大的服务器端技术,它是用于创建复杂Web应用的一整套快速应用开发系统。JRun可以使我们开始开发并测试Java应用。它最多接受5个并发的连接并且包括全部JavaServletAPI,支持JavaServerPages(JSP),支持所有主要的Webservers和计算机平台。JRunPro能够在生产环境下承受大访问量的负载,帮助我们实施应用、服务或Web站点(包括内联网)。JRunPro支持无限量并发式连接运行多个Java虚拟机,包括多个并发的Java虚拟机(JVM)。提供一个远程管理applet以及一个远程可再分布式的管理applet。JRunProUnlimited包括了所有JRunPro的功能,除次以外,还可以运行无限量的,并发的JVM。JRun依靠其内置的JRunWebServer可以单独运行。使用服务器端Java,用户可以开发出复杂的商业应用系统。最重要的一点是,由于servlets的平台独立性,以及更加简单的开发、更快速的实施、更经济的维护成本,它是CGI(CommonGatewayInterface)或Perlscripts的极佳的替代产品。缺点就是对于初学者来说,较复杂,也比较难。10、JCreator
JCreator是一个Java程序开发工具,也是一个Java集成开发环境(IDE)。无论你是要开发Java应用程序或者网页上的Applet元件都难不倒它。在功能上与Sun公司所公布的JDK等文字模式开发工具相较之下来得容易,还允许使用者自订义操作窗口界面及无限Undo/Redo等功能。JCreator为用户提供了相当强大的功能,例如项目管理功能,项目模板功能,可个性化设置语法高亮属性、行数、类浏览器、标签文档、多功能编绎器,向导功能以及完全可自定义的用户界面。通过JCreator,我们不用激活主文档而直接编绎或运行我们的JAVA程序。JCreator能自动找到包含主函数的文件或包含Applet的Html文件,然后它会运行适当的工具。在JCreator中,我们可以通过一个批处理同时编绎多个项目。JCreator的设计接近Windows界面风格,用户对它的界面比较熟悉。其最大特点是与我们机器中所装的JDK完美结合,是其它任何一款IDE所不能比拟的。它是一种初学者很容易上手的java开发工具,缺点是只能进行简单的程序开发,不能进行企业J2EE的开发应用。
11、MicrosoftVJ++
VisualJ++是Microsoft公司推出的可视化的Java语言集成开发环境(IDE),为Java编程人员提供了一个新的开发环境,是一个相当出色的开发工具。无论集成性、编译速度、调试功能、还是易学易用性,都体现了Microsoft的一惯风格。VisualJ++具有
下面的特点:
1)VisualJ++把Java虚拟机(JVM)作为独立的操作系统组件放入Windows,使之从浏览器中独立出来。
2)Microsoft的应用基本类库(AFC,ApplicationFoundationClassLibrary)对SUN公司的JDK作了扩展,使应用基本类库更加适合在Windows下使用。
3)VisualJ++的调试器支持动态调试,包括单步执行、设置断点、观察变量数值等。
4)VisualJ++提供了一些程序向导(Wizards)和生成器(Builders),它们可以方便地帮助用户快速地生成Java程序,帮助你在自己的工程中创建和修改文件。
5)VisualJ++界面友好,其代码编辑器具有智能感知、联机编译等功能,使程序编写十分方便。VisualJ++中建立了Java的WFC,这一新的应用程序框架能够直接访问Windows应用程序接口(API),使你能够用Java语言编写完全意义上的Windows应用程序。
6)VisualJ++中表单设计器的快速应用开发特性使用WFC创建基于表单的应用程序变得轻松、简单。通过WFC可以方便地使用ActiveX数据对象(ADO,ActiveXDataObjects)来检索数据和执行简单数据的绑定。通过在表单设计器中使用ActiveX数据对象,可以快速地在表单中访问和显示数据。VisualJ++能结合微软的一贯的编程风格,很方便进行Java的应用开发,但它的移植性较差,不是纯的Java开发环境。
12、Eclipse
Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。Eclipse框架的这种灵活性来源于其扩展点。它们是在XML中定义的已知接口,并充当插件的耦合点。扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个Java类的描述。任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何Eclipse插件也可以遵从其它插件定义的扩展点。除了解由扩展点定义的接口外,插件不知道它们通过扩展点提供的服务将如何被使用。利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器等)结合在一起。如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。事实上,由于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C++调试器还是汇编调试器都是有效的,并可以在相同的框架内同时瞄准不同的进程或节点。Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件,这类似于微软公司的VisualStudio和Sun微系统公司的NetBeans平台。Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术。Eclipse联盟已经宣布将在2004年中期发布其3.0版软件。这是一款非常受欢迎的java开发工具,这国内的用户越来越多,实际上实用它java开发人员是最多的。缺点就是较复杂,对初学者来说,理解起来比较困难。
13、Ant
AnotherNeatTool(Ant)是一种基于Java的build工具。理论上来说,它有些类似于(Unix)C中的make,但没有make的缺陷。因为Ant的原作者在多种(硬件)平台上开发软件时,无法忍受这些工具的限制和不便。类似于make的工具本质上是基于shell(语言)的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命令没太大区别)。这就意味着你可以很容易地通过使用OS特有的或编写新的(命令)程序扩展该工具;然而,这也意味着你将自己限制在了特定的OS,或特定的OS类型上,如Unix。Ant就不同了。与基于shell命令的扩展模式不同,Ant用Java的类来扩展。(用户)不必编写shell命令,配置文件是基于XML的,通过调用target树,就可执行各种task。每个task由实现了一个实现了特定Task接口的对象来运行。Ant支持一些可选task,一个可选task一般需要额外的库才能工作。可选task与Ant的内置task分开,单独打包。这个可选包可以从你下载Ant的同一个地方下载。ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。Ant是Apache提供给Java开发人员的构建工具,它可以在WindowsOS和UnixOS下运行,它不仅开放源码并且还是一个非常好用的工具。Ant是ApacheJakarta中一个很好用的Java开发工具,Ant配置文件采用XML文档编写,所以Java程序员对其语法相当熟悉,Ant是专用于Java项目平台,能够用纯Java来开发,它能够运行于Java安装的平台,即体现了它的跨平台功能。它的缺点显示执行结果只能是DOS字符界面,不能进行复杂的java程序开发。
14、IntelliJ
IntellijIDEA是一款综合的Java编程环境,被许多开发人员和行业专家誉为市场上最好的IDE。它提供了一系列最实用的的工具组合:智能编码辅助和自动控制,支持J2EE,Ant,JUnit和CVS集成,非平行的编码检查和创新的GUI设计器。IDEA把Java开发人员从一些耗时的常规工作中解放出来,显著地提高了开发效率。具有运行更快速,生成更好的代码;持续的重新设计和日常编码变得更加简易,与其它工具的完美集成;很高的性价比等特点。在4.0版本中支持Generics,BEAWebLogic集成,改良的CVS集成以及GUI设计器。
IntelliJIDEA能尽可能地促进程序员的编程速度。它包括了很多辅助的功能,并且与Java结合得相当好。不同的工具窗口围绕在主编程窗口周围,当鼠标点到时即可打开,无用时也可轻松关闭,使用户得到了最大化的有效屏幕范围。以技术为导向的IDEA集成了调试器,支持本地和远程的调试,即使我们需要修改一些设置上的东西使我们的工作顺利进展。另外,它还提供了通常的监视,分步调试以及手动设置断点功能,在这种断点模式下,我们可以自动地在断点之外设置现场访问,甚至可以浏览不同的变量的值。IDE支持多重的JVM设置,几个编译程序和Ant建造系统,并且,它使得设置多重的自定义的类途径变得简单。IntelliJIdea是一个相对较新的JavaIDE。它是Java开发环境中最为有用的一个。高度优化的IntelleJIdea使普通任务变得相当容易,Idea支持很多整合功能,更重要的使它们设计的好容易使用。Idea支持XML中的代码实现,Idea同时还会校正XML,Idea支持JSP的结构。作用于普通Java代码的众多功能同样适用于JSP(比如整合功能),同时支持JSP调试;支持EJB,尽管它不包括对个别应用服务器的特殊支持。Idea支持Ant建立工具,不仅是运行目标它还支持编译与运行程序前后运行目标,另外也支持绑定键盘快捷键。在编辑一个Ant建立XML文件时,Idea还对组成Ant工程的XML部分提供支持。IntelliJIDEA被称为是最好的JAVAIDE开发平台,这套软件就是以其聪明的即时分析和方便的refactoring功能深获大家所喜爱。缺点是较复杂,对初学者来说,理解起来比较困难。
小结
现在常用的Java项目开发环境有:JBuilder、VisualAgeforJava、ForteforJava,VisualCafe、Eclipse、NetBeansIDE、JCreator+J2SDK、jdk+记事本、EditPlus+J2SDK等等。一般开发J2EE项目时都需要安装各公司的应用服务器(中间件)和相应的开发工具,在使用这些开发工具之前,我们最好能熟知这些软件的优点和缺点,以便根据实际情况选择应用。编程工具只是工具,为了方便人们工作而开发的,各有特点,因此,选工具主要的依据自己将要从事的领域是什么,而不是盲目的认为那种工具好,那种工具不好。最后希望大家都能找到自己合适的java开发工具