- Java既是编译型语言,又是解释型语言
java源文件首先需要通过javac编译生成后缀名为.class的字节码文件(与平台无关,只面向JVM),然后使用Java虚拟机将字节码解释成特定平台上的机器码运行。 - Java虚拟机JVM
不同平台上的JVM不同,但是都提供了相同的接口。 - 开发Java准备
- 下载安装Java8的JDK,并将jdk的安装路径添加到环境变量中。
- 开发Java需要安装JDK,JDK包含Java编译器(javac命令工具)、Java运行时环境(JRE)、常用的Java类库等。
- JRE包含JVM,还包含类加载器、字节码校验器及大量的基础类库等环境支持。
- 如果只是运行Java程序,可以只安装JRE。
- 第一个Java程序
编写第一个著名的程序:HelloWorld。
pulic calss HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld"); } }
- 使用javac命令编译java程序。
- 命令行输入cmd,进入Java源文件所在的路径
- 输入如下命令,其中destdir是目标生成路径
javac -d destdir HelloWorld.java
- 进入destdir路径下,可以看到已经生成了后缀名为.class的字节码文件
- 使用java命令解释执行字节码文件。
- 运行如下命令执行程序
java HelloWorld
- 运行如下命令执行程序
- Java程序的基本规则
- Java是纯面向对象的语言,类是Java程序的最小程序单位。
- javac可以编译一个类,而解释执行一个类则需要以main方法为入口,main方法的写法是固定的。
- Java严格区分大小写,类名首字母大写,方法名第一个单词首字母小写,关键字小写。
- 一个java源文件最多只能定义一个public类,因源文件名需要与public类的类名相同。
- 垃圾回收机制
- 显式进行垃圾回收的缺点
- 忘记回收导致内存泄漏,降低系统性能
- 错误回收程序核心类库的内存,导致系统崩溃
- Java虚拟机的堆内存用来保存类的对象,JVM的一个超级线程会进行检测,如果一个对象长时间不被引用GC会释放其所占用的内存空间,同时进行碎片整理将所占用的堆内存移到堆的一端,整理出新内存分配给其他对象。
- 使用GC的优点
- 提高编程效率
- 保护程序的完整性和安全性
- 使用GC的缺点
- 垃圾回收在cpu空闲或者内存不足时进行,影响程序性能
- GC的特点
- 只能回收JVM堆内存的内存空间,不能回收物理内存的资源
- 将对象的引用变量设置为null可以暗示GC回收该对象
- 调用Runtime对象的gc()或者System.gc()仅仅是建议系统进行垃圾回收,不能精确控制
- 显式进行垃圾回收的缺点
- 使用IDE工具
- 下载安装Eclipse开发工具
- 配置自动补全
- Windows-Preferences-Java-Editor-Content Asist,将Auto activation triggers for Java改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可
- 熟悉快捷键
- 自动导入相关包:Ctrl+Shift+O
- ...
java程序在不同平台下运行速度差异,求原因及解决办法!!!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java程序在不同平台下运行速度差异,求原因及解决办法!!!!!相关的知识,希望对你有一定的参考价值。
1.在Windows XP下写的java程序,如Test.java。将Test.java和Test.class拷贝至Ubuntu9.10下测试:
a.运行Test.class文件,速度和在Windows平台下相当;
b.编译Test.java文件,运行生成后的Test.class文件,速度也和Windows相当。
c.在Windows下运行Test.class文件时的速度还算比较快。
2.在Ubuntu9.10下写的java程序,如Test.java。将Test.java和Test.class拷贝至Windows XP下测试:
a.运行Test.class文件,速度很慢,单击鼠标无法相应;
b.编译Test.java文件,运行生成后的Test.class文件,速度依然很慢。
附我用于测试的源代码:
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
public class TestFrame extends JFrame implements MouseListener
String s1 = new String (" Welcome !") ;
public TestFrame(String s)
int width = Toolkit.getDefaultToolkit().getScreenSize().width ;
int height = Toolkit.getDefaultToolkit().getScreenSize().height ;
this.setTitle(s) ;
this.setSize(400, 400) ;
this.setLocation((width-400)/2 , (height-400)/2) ;
this.setVisible(true) ;
this.setResizable(false) ;
this.setDefaultCloseOperation(EXIT_ON_CLOSE) ;
addMouseListener(this) ;
public void paint(Graphics g)
g.drawString(s1, 30, 100) ;
@Override
public void mouseClicked(MouseEvent arg0)
// TODO Auto-generated method stub
@Override
public void mouseEntered(MouseEvent arg0)
// TODO Auto-generated method stub
s1 = "Hello ,nice to see you !" ;
@Override
public void mouseExited(MouseEvent arg0)
// TODO Auto-generated method stub
s1 = "Goodbye!" ;
@Override
public void mousePressed(MouseEvent arg0)
// TODO Auto-generated method stub
s1 = "How are you doing ?" ;
@Override
public void mouseReleased(MouseEvent arg0)
// TODO Auto-generated method stub
/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
new TestFrame("Test");
我已发现问题并解决了!谢谢各位了!
随机性太大了。
如果是有几十W以上的数据操作,或几千以上的对象操作,或几千W像素的绘图操作才有说服力。 参考技术B 平台不同,测试环境不同,运行速度当然不同。 参考技术C 我在ubuntu9.04下写的代码拿到xp运行没啥区别,反之也是 至于9.10么 由于那个家宽bug没装java就给卸了 莫非和ubuntu的版本有关本回答被提问者采纳 参考技术D 这个不会关编译环境的事吧,最多差异也是在JRE运行的时候
Java程序运行机制及开发环境
以上是关于java程序在不同平台下运行速度差异,求原因及解决办法!!!!!的主要内容,如果未能解决你的问题,请参考以下文章
同一个java程序能在不同的操作系统平台上运行,这是怎么实现的?
图解JAVA内存模型(JMM:JAVA Memory Model)
win7 64位安装anaconda3-5.2.0 64位安装到最后出错,是啥原因,求解决。