积累:
1、JVM,JRE, JDK关系:
JVM : Java Virtual Machine(Java虚拟机) 。所谓“虚拟机”顾名思义就是模拟出来的东西。就像是我们在用电脑看电视,但是电脑里并没有像电视机里面一样的硬件支持,但是我们仍然可以从电脑里接受电视台的节目。那是因为我们编写了一个可以模拟电视机硬件工作的软件运行在电脑的平台上面的原因。同样JVM就是模拟了电脑的硬件,它同样有着像CPU一样可以执行代码的功能。它的实现具体有:指令集 寄存器组 类文件格式 栈 垃圾收集堆 内存区。可以把它理解成是专门用来执行Java程序的一台机器。也就是说JVM提供了Java执行的硬件平台。JVM上执行的代码都存放在 .CLASS 的文件中。JVM只执行字节码文件。
JRE : Java Runtime Environment(Java运行环境)。就是可以运行Java程序的地方。就像是我们要在电脑上运行一个视频软件的时候必须在Windos或者是Linux等操作系统上一样。那我们就可以把它看做是一个操作系统。也就是说JRE提供了Java程序执行的软件平台。在运行Java的过程中除了需要有JVM执行Java代码这个动作外,还需要Java API(Application Programming Interface,应用编程接口)说简单的就是“类库”。Java程序在运行中没有这些API是不行的,所以JRE包含JVM。
JDK : Java Development ToolKit(Java开发工具包)。我们有了硬件(JVM)和软件(JRE)两个平台后就可以做我们自己想做的事情了。JDK就是我们用来做事情的工具,它包括JRE还有其他工具。我们所说版本的不同,也就是说它里面的工具有差异。就像是你不同的工具箱里放着不同的工具一样。举个例子:最常用的一个就是javac,它是把.java的文件翻译成.class文件的工具。然后让JVM来执行.class文件中的字节码。(就像电脑的CPU只认识0或1的道理)
如果一台计算机的需求只是运行Java程序,而不是去编写Java程序的时候,它只需要安装JRE就可以了。现在大家知道JVM JRE JDK,这些东西到底是什么了吧。
2、每个项目最重要的十件事
原因是:(1)新的开发者很快的就能够加快这个项目的进程,(2)用户能够容易的安装你的产品,而且也很容易去维护。
1>版本控制;
2>命令行编译脚本:我大部分的时间都在用Eclipse,他可以为我做所有的编译,单元测试和代码覆盖(EclEmma )。不过您需要命令行脚本去不断的build(通常是使用Ant 脚本)。你的脚本应分为:
1. 编译代码
2.编译测试
3.生成javadoc
4.运行测试与代码覆盖:我使用Emma 或cobertura 。
5.生成报告:测试的通过/失败和覆盖
6.建立一个分布的JAR。
3>默认的嵌入式Web服务器 :如果您正在建设一个Web应用程序,我推荐Jetty 作为您的Web容器。 Jetty 最酷的地方是您可以在您的main函数中新建服务。使用Tomcat 时,你要导入一个war文件,并将它添加到Tomcat 的目录中,然后等待Tomacat “安装” ,这样就会比较麻烦。但使用Jetty 您可以通过一个main函数开始您的应用(就像一个正常的桌面APP )并通过你的main函数来启动Jetty 。您的开发者更容易去开发/调试,您的客户也更容易去部署。
4>.默认情况下嵌入式数据库 :没有什么比一个复杂的数据库安装说明更复杂。所以我使用一个嵌入式数据库,例如HSQLDB 。 在开发和测试中,我让系统采用一个内存数据库,然后我才使用这个数据库的硬盘版本。 但在这两种情况下客户/开发做的没有不同,这是最重要的。如果生产环境需要大负载,我再提供命令行选项,切换到外部数据库如Oracle数据库。
5>guice 依赖注入 :如果您想要一个可维护性,可测性和容易理解的code-base,您需要使用依赖注入 ( DI )作为一个设计模式。一个自动化的DI框架,使您的工作更轻松。我使用guice我想这是最先进的DI投资,同样还有picocontainer 和spring 。
6>易于安装/运行 :现在考虑的是让顾客更容易的去尝试你的产品。 我喜欢给我的客户看一个JAR文件,并告诉他们“双击”来启动JVM , Web服务器,数据库,安装架构,并推出网络浏览器(基于本地)。或您的应用通过Java Web Start 开始,这样你就可以在web页面中一键式安装,这样就不需要安装手册了。
a)把主要class放在JAR MANIFAST,这样只要双击就可以加载你的应用。
b)把所有的JAR依赖放在主要的JAR文件中,使用JarJar 或者One-Jar-Classloader 。
c)给应用提供:内存数据;安装schema; 加载Web的容器; 安装自动提供一个admin用户等等……
3、java开发为什么要配置JDK及Tomcat的环境变量?
先说不配置tomcat的环境变量为什么tomcat可以运行吧,
用记事本打开tomcat/bin目录下面的startup.bat
在文本的前一部分有下面的脚本代码
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%
if not "%CATALINA_HOME%" == "" goto gotHome
set CATALINA_HOME=%CURRENT_DIR%
........
其中的
set XXXXXXXX=******
就是增加一个临时的环境变量.只对当前的进程起作用的,
%cd%是windows控制台程序自带的一个变量.指这个脚本所在的那个目录的路径,
set CATALINA_HOME=%CURRENT_DIR%
自然就是设置一个临时的环境变量CATALINA_HOME...这个就是一些教程里边所要配置的环境变量啦...以前版本的tomcat是要配置的..但是比较新版本的现在都不用了...4.0以后吧..
再来一个就是jdk的JAVA_HOME了...其实也是相类似的
windows版本的jdk安装以后会将安装的路径写入系统的注册表里边的...很多程序不用配置JAVA_HOME是因为那些程序是直接通过读取注册表里边的路径获取了jdk的路径.比如eclipse; netbeans则是在安装的时候,安装程序会去注册表里边读取jdk的路径,直接把它写到netbeans的配置文件里边去了
而tomcat就没有这样去处理,只是简单地通过环境变量去获取jdk的路径,所以要运行tomcat一般都是要配置环境变量的..如果不配置也可以,修改tomcat/bin/startup.bat...tomcat这样做也是出于跨平台考虑的...因为系统注册表是只有windows系统才有的
--------
为什么要设置环境变量原因很简单:首先,java文件要通过javac命令编译生成.class文件,这个编译的命令在java的jdk里面,想要执行它就必须知道它的存放路径,第二,java文件执行的时候执行的是编译好的.class文件,那么就必须知道编译后的.class文件放在了什么地方。(执行用的是java命令,他和javac同在jdk里面)。基于上面的两个需要就必须配置环境变量,其实就是要两个路径。
4、我觉得学API分三个步骤:
1、熟悉API的结构,例如API文档的格式,以及如何查阅等基础技能
2、熟悉某种技术,其实是一个包或者多个包的结构,写一个简单的具有一定功能的程序,例如学习界面包,就做一个包含界面和事件处理的小程序等。
3、举一反三,在实际的开发中熟悉需要的功能。
http://www.onjava.com/pub/a/onjava/api_map/index.html
教你 Java Api使用的三个网站: | |
http://www.java2s.com/Code/JavaAPI/CatalogJavaAPI.htm (很好) 第二个 http://www.javaref.cn (好像不行) 第三个 http://www.exampledepot.com/?l=ex |
5、java被编译后,为什么有时还有个$1.class的文件呢?
问题:
1、我们程序进行优化,一般流程是怎么样的,可以优化那些方面,这些方面又有什么原则?
2、如何保证工作学习两不误?
最好 是把 工作、学习、娱乐爱好放在一起,那就好了。
3、