为什么Java平台对程序运行有影响

为什么Java平台对程序运行有影响,第1张

Java平台对程序运行有影响,主要是因为Java虚拟机(JVM)的存在。Java程序在编译后并不是直接转化为机器码,而是转化为一种称为字节码的中间代码,这样的好处是可以在不同的平台上运行,而不需要重新编写代码。但是,这些字节码需要在Java虚拟机上运行才能执行,而JVM的效率和性能的高低直接影响到程序的运行效果。

另外,Java平台还提供了许多内置库和框架,这些库和框架可以帮助开发者更快地开发应用程序,但是如果这些库和框架不正确地使用或者版本过旧,也会对程序的性能和稳定性产生影响。

因此,对于Java程序的运行效果,除了程序本身的质量外,还需要考虑JVM的性能和版本、内置库和框架的使用等因素。开发者需要在开发和部署Java应用程序时,综合考虑这些因素,以确保程序的性能和稳定性。

这个是用配置文件连接数据库的例子,原理和xml一样,需要你解析文件。供你参考:

dbproperties文件内容(以oracle为例)

#驱动:

driver=oraclejdbc

#地址:

url=jdbc:oracle:thin:@172160212:1521:orcl

#用户名:

user=1234

#密码:

password=1234

#初始连接数:

initialSize=10

-------------------------------------------

代码:

publicclassDBUtils{

privatestaticStringdriver=null;

privatestaticStringurl=null;

privatestaticStringuser=null;

privatestaticStringpassword=null;

privatestaticds;

static{

//读取程序外的properties文件

//需要properties文件的包路径

Propertiesprops=newProperties();

try{

Stringpath="utils/dbproperties";//路径根据你自己的实际情况

propsload(DBUtilsclass()(path));

//properties对象getProperty("字符串")

driver=propsgetProperty("driver");

url=propsgetProperty("url");

user=propsgetProperty("user");

password=propsgetProperty("password");

ds=new();

ds(driver);

dssetUrl(url);

dssetUsername(user);

dssetPassword(password);

ds(IntegerparseInt(propsgetProperty("initialSize")));

ClassforName(driver);

}catch(Exceptione){

e();

}

}

publicstaticConnection()

throws{

Connectionconn=null;

if(ds!=null)conn=ds();

returnconn;

}

publicstaticvoid(Connectionconn)throwsException{

if(conn!=null)connclose();

}

publicstaticvoidmain(String[]args)throws{

DBUtilsdb=newDBUtils();

db();

}

}

Java的用途在以下几方面:

1桌面GUI应用程序: Java通过抽象窗口工具包,Swing和JavaFX等多种方式提供GUI开发。虽然AWT包含许多预先构建的组件,如菜单,按钮,列表以及众多第三方组件,但Swing还提供某些高级组件,如树,表格,滚动窗格,选项卡式面板和列表。JavaFX是一组图形和媒体包,提供了Swing互 *** 作性,3D图形功能和自包含的部署模型,可以快速编写Java小应用程序和应用程序的脚本。

2移动应用程序: Java Platform,Micro Edition是一个跨平台框架,用于构建可在所有Java支持的设备上运行的应用程序。此外,最受欢迎的移动 *** 作系统之一的Android应用程序通常使用Android软件开发工具包或其他环境在Java中编写脚本。

3嵌入式系统: 从微型芯片到专用计算机的嵌入式系统是执行专门任务的大型机电系统的组件。诸如SIM卡,蓝光光盘播放器,公用事业仪表和电视机等多种设备都使用嵌入式Java技术。据甲骨文公司称,100%的蓝光光盘播放器和125亿台电视设备都采用Java技术。

4 Web应用程序: Java通过Servlets,Struts或JSP提供对Web应用程序的支持。编程语言提供的简单编程和更高的安全性使得大量政府应用程序可用于基于Java的健康,社会安全,教育和保险。Java也可以使用Broadleaf等开源电子商务平台开发电子商务Web应用程序。

5 Web服务器和应用程序服务器: 今天的Java生态系统包含多个Java Web服务器和应用程序服务器。虽然Apache Tomcat,Simple,Jo !, Rimfaxe Web服务器和Project Jigsaw占据了Web服务器空间,但WebLogic,WebSphere和Jboss EAP在商业应用服务器领域占据重要地位。

6企业应用程序: Java企业版是一种流行的平台,为脚本和运行企业软件提供API和运行时环境。甲骨文宣称Java在97%的企业计算机上运行。Java中更高的性能保证和更快的计算能力导致像Murex这样的高频交易系统被编入脚本中。它也是各种银行应用程序的中枢,它们将Java从前端用户端运行到后端服务器端。

7科学应用: Java是许多软件开发人员用于编写涉及科学计算和数学运算的应用程序的选择。这些程序通常被认为是快速和安全的,具有更高的便携性和低维护性。像MATLAB这样的应用程序使用Java来交互用户界面和作为核心系统的一部分。

初学java一般用什么开发工具

互联网飞速发展的今天,java的应用越来越广泛,想学java的人也随之增多。大家都知道java的开发工具有很多,而且各有优缺点,对于初学者来讲往往不知道有哪些常用的开发工具,现在我就为大家讲一下,初学者一般用什么开发工具,电脑培训希望本文有助于初学者了解java开发工具,并作出选择。

一、Editplus

EditPlus是功能很全面的文本、HTML、程序源代码编辑器。默认的支持HTML、ASP、Perl、C/C++、CSS、PHP、Java、javascript和VBScript的语法着色。通过定制语法文件还可以扩展到其他程序语言。可以在Tools菜单的ConfigureUserTools菜单项配置用户工具,类似于UltraEdit的配置,配置好Java的编译器Javac和解释器Java后,通过EditPlus的菜单可以直接编译执行Java程序。

二、UltraEdit

初学者一般用什么开发工具UltraEdit是一个功能强大的文本、HTML、程序源代码编辑器。作为源代码编辑器,它的默认配置可以对C/C++,VB,HTML,Java和Perl进行语法着色。用它设计Java程序时,可以对Java的关键词进行识别并着色,方便了Java程序设计。它具有完备的复制、粘贴、剪切、查找、替换、格式控制等编辑功能。可以在Advanced菜单的ToolConfiguration菜单项配置好Java的编译器Javac和解释器Java,直接编译运行Java程序。

三、Eclipse

初学者一般用什么开发工具Eclipse是一个开放可扩展的集成开发环境(IDE)。它不仅可以用于Java的开发,通过开发插件,它可以构建其他的开发工具。Eclipse是开放源代码的项目,并可以免费下载。建议使用Releases或StableBuilds版本。

四、Jcreator

Jcreator是一个用于Java程序设计的集成开发环境,具有编辑、调试、运行Java程序的功能。这个软件比较小巧,对硬件要求不是很高,完全用C++写的,速度快、效率高。具有语法着色、代码参数提示、工程向导、代码自动完成、类向导等功能。先进次启动时提示设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、编译器及解释器路径,还可以在帮助菜单中使用JDKHelp。但目前这个版本对中文支持性不好。

初学java一般用什么开发工具以上是比较常用的四种开发工具,此外还有Borland的JBuilder、JDeveloper、VisualCafeforJava、VisualAgeforJava等,随着学习的深入,相信慢慢都会了解到也会从中找到最适合自己的那款开发工具。

代码为:

Scanner scanner=new Scanner(Systemin);

Systemoutprintln("请输入圆的半径:");

int r=IntegerparseInt(scannernext()); //获取半径

Systemoutprintln("圆的面积为:"+MathPIrr);

扩展资料:

java所具有的特性:

1简单性

Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持goto语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的 *** 作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。

因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。

2面向对象

Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和 *** 纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和 *** 作数据的方法的集合。

数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。

Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(javaawt包),这里awt是抽象窗口工具集(abstractwindowingtoolkit)的缩写,处理输入输出的类(javaio包)和支持网络功能的类(javanet包)。

3分布性

Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。

网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。

4编译和解释性

Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-timesystem)的系统上运行。

在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。

5稳健性

Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。

Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。

可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。

异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。

6安全性

Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器

。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。

Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。这个安全机制部分包括类如何从网上装载。例如,装载的类是放在分开的名字空间而不是局部类,预防恶意的小应用程序用它自己的版本来代替标准Java类。

7可移植性

Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。

Java环境本身对新的硬件平台和 *** 作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。

8高性能

Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。

Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。

9多线索性

Java是多线索语言,它提供支持多线索的执行(也称为轻便过程),能处理不同任务,使具有线索的程序设计很容易。Java的lang包提供一个Thread类,它支持开始线索、运行线索、停止线索和检查线索状态的方法。

Java的线索支持也包括一组同步原语。这些原语是基于监督程序和条件变量风范,由CARHaore开发的广泛使用的同步化方案。用关键词synchronized,程序员可以说明某些方法在一个类中不能并发地运行。这些方法在监督程序控制之下,确保变量维持在一个一致的状态。

10动态性

Java语言设计成适应于变化的环境,它是一个动态的语言。例如,Java中的类是根据需要载入的,甚至有些是通过网络获取的。

参考资料:

百度百科-Java

以下是代码的完整实现,可以在控制台输出 "Hello world":

interface Inter { void show();

}class Outer { public static Inter method() { return new Inter() { public void show() {

Systemoutprintln("Hello world");

}

};

}

}class Inner { public static class InnerDemo { public static void main(String[] args) {

Outermethod()show();

}

}

}

这个程序中定义了一个接口 Inter 和一个外部类 Outer。Outer 类中有一个静态方法 method,该方法返回了一个实现了 Inter 接口的匿名内部类的实例,实现了接口中的 show() 方法。

在 InnerDemo 类的 main 方法中调用 Outermethod() 方法并且调用返回实例的 show() 方法,因此将会在控制台上打印出 "Hello world"。

在Java语言产生前 传统的程序设计语言的程序同一时刻只能单任务 *** 作 效率非常低 例如程序往往在接收数据输入时发生阻塞 只有等到程序获得数据后才能继续运行 随着Internet的迅猛发展 这种状况越来越不能让人们忍受 如果网络接收数据阻塞 后台程序就处于等待状态而不继续任何 *** 作 而这种阻塞是经常会碰到的 此时CPU资源被白白的闲置起来 如果在后台程序中能够同时处理多个任务 该多好啊!应Internet技术而生的Java语言解决了这个问题 多线程程序是Java语言的一个很重要的特点 在一个Java程序中 我们可以同时并行运行多个相对独立的线程 例如 我们如果创建一个线程来进行数据输入输出 而创建另一个线程在后台进行其它的数据处理 如果输入输出线程在接收数据时阻塞 而处理数据的线程仍然在运行 多线程程序设计大大提高了程序执行效率和处理能力

线程的创建

我们知道Java是面向对象的程序语言 用Java进行程序设计就是设计和使用类 Java为我们提供了线程类Thread来创建线程 创建线程与创建普通的类的对象的 *** 作是一样的 而线程就是Thread类或其子类的实例对象 下面是一个创建启动一个线程的语句

Thread thread =new Thread(); file://声明一个对象实例 即创建一个线程

Thread run(); file://用Thread类中的run()方法启动线程

从这个例子 我们可以通过Thread()构造方法创建一个线程 并启动该线程 事实上 启动线程 也就是启动线程的run()方法 而Thread类中的run()方法没有任何 *** 作语句 所以这个线程没有任何 *** 作 要使线程实现预定功能 必须定义自己的run()方法 Java中通常有两种方式定义run()方法

通过定义一个Thread类的子类 在该子类中重写run()方法 Thread子类的实例对象就是一个线程 显然 该线程有我们自己设计的线程体run()方法 启动线程就启动了子类中重写的run()方法

通过Runnable接口 在该接口中定义run()方法的接口 所谓接口跟类非常类似 主要用来实现特殊功能 如复杂关系的多重继承功能 在此 我们定义一个实现Runnable() 接口的类 在该类中定义自己的run()方法 然后以该类的实例对象为参数调用Thread类的构造方法来创建一个线程

线程被实际创建后处于待命状态 激活(启动)线程就是启动线程的run()方法 这是通过调用线程的start()方法来实现的

下面一个例子实践了如何通过上述两种方法创建线程并启动它们

// 通过Thread类的子类创建的线程 class thread extends Thread { file://自定义线程的run()方法 public void run() { System out println( Thread is running… ); } } file://通过Runnable接口创建的另外一个线程 class thread implements Runnable { file://自定义线程的run()方法 public void run() { System out println( Thread is running… ); } } file://程序的主类 class Multi_Thread file://声明主类 { plubic static void mail(String args[]) file://声明主方法 { thread threadone=new thread (); file://用Thread类的子类创建线程 Thread threado=new Thread(new thread ()); file://用Runnable接口类的对象创建线程 threadone start(); threado start(); file://strat()方法启动线程 } }

运行该程序就可以看出 线程threadone和threado交替占用CPU 处于并行运行状态 可以看出 启动线程的run()方法是通过调用线程的start()方法来实现的(见上例中主类) 调用start()方法启动线程的run()方法不同于一般的调用方法 调用一般方法时 必须等到一般方法执行完毕才能够返回start()方法 而启动线程的run()方法后 start()告诉系统该线程准备就绪可以启动run()方法后 就返回start()方法执行调用start()方法语句下面的语句 这时run()方法可能还在运行 这样 线程的启动和运行并行进行 实现了多任务 *** 作

线程的优先级

对于多线程程序 每个线程的重要程度是不尽相同 如多个线程在等待获得CPU时间时 往往我们需要优先级高的线程优先抢占到CPU时间得以执行 又如多个线程交替执行时 优先级决定了级别高的线程得到CPU的次数多一些且时间多长一些 这样 高优先级的线程处理的任务效率就高一些

Java中线程的优先级从低到高以整数 ~ 表示 共分为 级 设置优先级是通过调用线程对象的setPriority()方法 如上例中 设置优先级的语句为

thread threadone=new thread (); file://用Thread类的子类创建线程

Thread threado=new Thread(new thread ()); file://用Runnable接口类的对象创建线程

threadone setPriority( ); file://设置threadone的优先级

threado setPriority( ); file://设置threado的优先级

threadone start(); threado start(); file://strat()方法启动线程

这样 线程threadone将会优先于线程threado执行 并将占有更多的CPU时间 该例中 优先级设置放在线程启动前 也可以在启动后进行设置 以满足不同的优先级需求

线程的(同步)控制

一个Java程序的多线程之间可以共享数据 当线程以异步方式访问共享数据时 有时候是不安全的或者不和逻辑的 比如 同一时刻一个线程在读取数据 另外一个线程在处理数据 当处理数据的线程没有等到读取数据的线程读取完毕就去处理数据 必然得到错误的处理结果 这和我们前面提到的读取数据和处理数据并行多任务并不矛盾 这儿指的是处理数据的线程不能处理当前还没有读取结束的数据 但是可以处理其它的数据

如果我们采用多线程同步控制机制 等到第一个线程读取完数据 第二个线程才能处理该数据 就会避免错误 可见 线程同步是多线程编程的一个相当重要的技术

在讲线程的同步控制前我们需要交代如下概念

用Java关键字synchonized同步对共享数据 *** 作的方法

在一个对象中 用synchonized声明的方法为同步方法 Java中有一个同步模型 监视器 负责管理线程对对象中的同步方法的访问 它的原理是 赋予该对象唯一一把 钥匙 当多个线程进入对象 只有取得该对象钥匙的线程才可以访问同步方法 其它线程在该对象中等待 直到该线程用wait()方法放弃这把钥匙 其它等待的线程抢占该钥匙 抢占到钥匙的线程后才可得以执行 而没有取得钥匙的线程仍被阻塞在该对象中等待

file://声明同步的一种方式 将方法声明同步

class store  {public synchonized void store_in(){… }public synchonized void store_out(){  … }}

  利用wait() notify()及notifyAll()方法发送消息实现线程间的相互联系

Java程序中多个线程通过消息来实现互动联系的 这几种方法实现了线程间的消息发送 例如定义一个对象的synchonized 方法 同一时刻只能够有一个线程访问该对象中的同步方法 其它线程被阻塞 通常可以用notify()或notifyAll()方法唤醒其它一个或所有线程 而使用wait()方法来使该线程处于阻塞状态 等待其它的线程用notify()唤醒

一个实际的例子就是生产和销售 生产单元将产品生产出来放在仓库中 销售单元则从仓库中提走产品 在这个过程中 销售单元必须在仓库中有产品时才能提货 如果仓库中没有产品 则销售单元必须等待

程序中 假如我们定义一个仓库类store 该类的实例对象就相当于仓库 在store类中定义两个成员方法 store_in() 用来模拟产品制造者往仓库中添加产品 strore_out()方法则用来模拟销售者从仓库中取走产品 然后定义两个线程类 customer类 其中的run()方法通过调用仓库类中的store_out()从仓库中取走产品 模拟销售者 另外一个线程类producer中的run()方法通过调用仓库类中的store_in()方法向仓库添加产品 模拟产品制造者 在主类中创建并启动线程 实现向仓库中添加产品或取走产品

如果仓库类中的store_in() 和store_out()方法不声明同步 这就是个一般的多线程 我们知道 一个程序中的多线程是交替执行的 运行也是无序的 这样 就可能存在这样的问题

仓库中没有产品了 销售者还在不断光顾 而且还不停的在 取 产品 这在现实中是不可思义的 在程序中就表现为负值 如果将仓库类中的stroe_in()和store_out()方法声明同步 如上例所示 就控制了同一时刻只能有一个线程访问仓库对象中的同步方法 即一个生产类线程访问被声明为同步的store_in()方法时 其它线程将不能够访问对象中的store_out()同步方法 当然也不能访问store_in()方法 必须等到该线程调用wait()方法放弃钥匙 其它线程才有机会访问同步方法

lishixinzhi/Article/program/Java/gj/201311/27301

以上就是关于为什么Java平台对程序运行有影响全部的内容,包括:为什么Java平台对程序运行有影响、javaCS程序(java开发cs项目)、Java的用途在哪些方面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9863566.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存