javac比较
A. JVM,JDK和JRE有什么区别它们的联系是什么
引言:在选择编程语言的时候,有一些人会选择java,Java在书写和制作的过程中所包含的内容还是比较多的,java中有三个比较常见的名词,分别是jvm、jdk、jre那么这三者有什么区别呢?之间的联系是怎么样的呢?
总结
学习Java是一个非常不错的选择,不过学习的过程中应该注意自己的学习进度并且及时的督促自己,才能够保证自己是能够学习好的,所以在日常生活中还是要多做总结和分析,从而能够保证自己是能够有效的学习JAVA的。
B. javac 的使用
javac其实就是一个拿来编译的命令,只是通过一些选项来辅助编译看下javac的使用说明用法:javac <选项> <源文件>
其中,可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序
-cp <路径> 指定查找用户类文件和注释处理程序
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖安装的扩展目录的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...]要运行的注释处理程序
的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-d <目录> 指定存放生成的类文件的位置
-s <目录> 指定存放生成的源文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <版本> 提供与指定版本的源兼容性
-target <版本> 生成特定 VM 版本的类文件
-version 版本信息
-help 输出标准选项的提要
-Akey[=value] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标志> 直接将 <标志> 传递给运行时系统 比较常用的有-d . ,在编译带包的类的时候比较习惯用这种 javac -d . Test.java 还有一些比较-encoding,-cp , -g命令说明就在上面了,具体有什么技巧我也不懂说反正想要什么样的结果就看着说明来做,如果不懂怎么回事,那可以一个个去试
C. CMD中javac和java命令的问题
“类名.java”这是一个固定的语法规则,就像“1+1=2”是类似的道理。“包名.类名.java”之所以会出错是因为没有这样的语法规则,就像“你在大街上随便碰见个人就让他还你钱 你说人家会干嘛”另外你既然提到了src目录,说明你在用java编程工具写代码了,就可以不用cmd这种原始工具编译代码了。cmd命令只适合简单简短的代码,是初学者用来熟悉基础代码的。
java命令和javac命令,java命令是运行命令,javac是编译命令。拿煮饭举例子:一个java程序,javac命令是负责淘米煮饭的而java命令是负责吃饭的。当你执行java命令的时候,说明煮饭淘米已经完成。如果这两个顺序颠倒了饭都没煮你吃什么,不报错才怪。“包名。类名.java”这种语法也是错的
如果还是不明白可以留下qq远程加好友指导你,这种问题最好是能看到源代码,比较好解决,就单单一个图不能直接判断只能知道大概可能是哪些原因或者问题。不能有正对性的解决问题
D. 比较分析不同Java程序调试环境的异同和优缺点。
充分利用 J2EE 调试工具--Java 开发环境的增强功能有助于调试J2EE 应用程序
我的第一个 Java 项目包括接管由我所在公司的一个部门编写的一个门户,该部门现在已经关闭了。当我凝视着运行门户代码的服务器终端时,我看到一行接一行的调试代码涌现在在屏幕上。进一步的研究之后,我发现 JavaServer Pages ( JSP )和 servlet 中到处都是 System.out.println (“ [Debug Statement] ”)。由于我对我接管的语言和代码有些陌生,我坚持自己为终端编写调试语句,因为我不知道调试 Java 代码的其他方法。
然而,在漫长而乏味的调试过程中,我不断失败。我发现在将代码提交给 QA 之前很难移除所有的调试语句。同样,调试涉及到重新编译、重新部署的代码和在执行代码时观察终端也非常困难。为了查找代码中断的点,我时常在方法中的每一行代码后加入 println 语句,在这种情况下,过程常常为找到的每一个故障重复。
最后,在我发现 Java 平台调试架构( Java Platform Debugger Architecture , JPDA )的时候,我摆脱了调试梦魇。 JPDA 是一套组成构建调试应用程序框架的 API 。幸运的是,我们大多数人不需要自己考虑创建调试应用程序的事,因为这些是与主要的 IDE 捆绑在一起提供的。调试在这些新的 IDE 中是一个相当简单和轻松的过程。
您必须执行几个步骤才可以使您的开发环境成为您可以进行调试的环境。如果您正在使用 Sun 的 Java Virtual Machine ( JVM )进行调试,您必须在命令行中指定启动 J2EE 容器的时间,其中, JVM 已经以调试模式启动。为了执行该操作,只需在 java 命令的后边添加 -Xdebug 参数。我们随后将研究一个命令行调试参数的示例。为了加载 Java Debug Wire Protocol ( JDWP ) 的 JPDA 参数实现,需要使用具有随后指定的 JPDA 选项的 -Xrunjdwp 。该参数加载进行中的调试资料库,而其子选项提供了调试服务器如何与调试客户端交互的细节。我们将研究一份 JPDA 子选项列表,该列表可以帮助设置正确的调试环境。
首先,指定传输选项。 transport 用于在调试程序和 VM 使用的进程之间通讯。 Win32 平台的 VM 提供了很多其他平台使用的共享内存传输和套接字传输。共享的内存传输(仅在 Win32 平台中受支持)要求调试应用程序和目标 VM 存放在相同的机器中。套接字传输使用标准的 TCP/IP 套接字来与调试信息通信。调试客户端和调试服务器可以位于使用套接字传输的相同或者不同的机器中。对于远程调试 Enterprise JavaBeans ( EJB )和 servlet 来说,我们关注于使用套接字传输,因为它受所有平台支持:
transport=dt_socket
我们正在启动的 VM 需要作为调试服务器执行。如前所述,调试服务器是运行以调试模式编译的应用程序的 JVM (以后讲述),并具有允许客户端连接和 监听 应用程序的开放套接字。为了使 VM 成为一台服务器,需要提供服务器选项,并将其值设置为 yes :
server=yes
接下来,我们需要指出调试服务器将要使用的端口号,同时也是端口客户端用来连接服务器的端口号。只有知道正在运行服务器的端口号的客户端才可以建立连接,因为不存在标准的调试端口,也就是 HTTP 服务器。任何未使用的端口都适用。在我们的情况中,我们使用了端口 4000 :
address=4000
避免混乱
您可以提供一个选项,仅在调试客户端建立连接之后启动 VM ( suspend=y )。我的 J2EE 容器具有一种服务,它可以在容器登录之后立即启动,而不用添加 suspend=y 到参数列表。我发现在我的那项服务启动之前,启动客户端并连接到 VM 有些混乱 。使用该选项,我就可以启动 VM 。当它暂停的时候,我打开 IDE ,设置中断点,然后建立调试连接。一旦连接建立,容器继续登录,而我可以一步步启动服务。
onthrow 选项推迟初始化 JDWP 资料库,直到引发指定类的异常。例如,如果需要在引发异常(如 ServletException )时执行一些操作,您需要包含如下选项:
onthrow=
javax.servlet.ServletException
同样, JDWP 资料库初始化也可以推迟,直到引发异常但没有捕获时,该操作可以通过提供 onuncaught=y 选项指定。
启动选项指出 VM 应当基于调试事件来启动应用程序,该事件与 onthrow 或者 onuncaught 选项一起提供:
launch=/usr/home/mydir/debugapp
让我们研究一些我经常使用的命令行调试参数的示例。在第一个示例中,我们将指导 VM 使用套接字传输。调用的 VM 是服务器,它应当监听端口 4000 。我们还指出 VM 应当在调试服务器建立连接后才可以暂停:
-Xrunjdwp:transport=
dt_socket,server=y,address=4000,
suspend=n
第二套参数类似于前一个示例,不同的是其传输现在是一种共享内存传输(仅限于 Windows ):
-X runjdwp:transport=
dt_shmem,server=y,address=4000,
suspend=n
第三套参数会导致 VM 通过端口 4000 上的套接字连接附加到正在运行中的调试服务器中,这将要求 VM 以调试模式运行在端口 4000 上的 SomeHost 中:
-X runjdwp:transport=
dt_socket,server=n,address=
SomeHost:4000, suspend=n
第四套参数将导致 VM 在开始的时候暂停。 VM 将等待建立与调试客户端的连接,然后再继续加载。 VM 使用端口 4000 来监听客户端,并使用套接字连接:
-X runjdwp:transport=
dt_socket,server=y,address=
4000, suspend=y
使用第五套参数,当引发 javax.management.InstanceNotFoundException 的时候, VM 将暂停,并启动 c:\debug.bat 。 debug.bat 脚本可以启动调试应用程序,该应用程序可以连接服务器,并开始调试会话:
-Xrunjdwp:transport=
dt_socket,address=4000,server=
y,suspend=y,onthrow=
javax.management.
InstanceNotFoundException,
launch=c:\debug.bat
最后一套参数将在引发异常但没有捕获的时候执行 debug.bat 脚本:
-Xrunjdwp:transport=
dt_socket,address=4000,server=
y,suspend=n,onuncaught=
y,launch=c:\debug.bat
我们现在可以使用一些现有的通用 IDE 来说明如何调试 J2EE 。我们在示例中使用的 J2EE 容器是 JBoss 服务器;然而,任何标准的 J2EE 容器都是可用的。 JBoss 服务器从 bin 目录中的 run.bat 文件启动。 BAT 文件可以接受调试命令行自变量,并将它们发送给 JVM 。作为一名开发人员,我发现我很少需要启动开发环境(除了调试模式),因此我将 run.bat 复制到一个名叫 debug.bat 的新文件中,并且在该文件中添加了调试参数。以下是 JBoss debug.bat 文件的内容:
rem Read all command line
rem arguments
set ARGS=
:loop
if [%1] == [] goto endloop
set ARGS=%ARGS% %1
shift
goto loop
:endloop
set JAVA_OPTS=
-Dprogram.name=run.bat
set JAVAC_JAR=
%JAVA_HOME%\lib\tools.jar
set RUNJAR=.\run.jar
set JBOSS_CLASSPATH=
%JBOSS_CLASSPATH%;%JAVAC_JAR%;
%RUNJAR%
rem Set the debug options here
set DEBUG_OPTS =
-Xdebug -Xnoagent
-Djava.compiler=
NONE -Xrunjdwp:transport=
dt_socket,address=
4000,server=y,suspend=n
Java %JAVA_OPTS% %DEBUG_OPTS%
-classpath "%JBOSS_CLASSPATH%"
org.jboss.Main %ARGS%
调试信息
在将 IDE 的调试程序连接到服务器之前,将应用程序放在服务器上。确保使用打开的调试信息对应用程序进行编译。这样做可以在已经编译的类文件中提供行编号方式。如果您使用 Ant 来构建项目,请确保 javac 任务包含:
debug="on"
否则, IDE 应当包含在编译期间打开调试的选项。
我提供了 从简单的 DocBook 文件生成 PDF E-Books 的 J2EE 应用程序 。该应用程序由会话 bean 、 JSP 文件和 servlet 组成。会话 bean 可以列举存储在服务器中的 DocBook 文档和 XSL 样式表文件。 JSP 使用会话 bean 来显示书籍和 XSL 文件的列表,以下拉列表的方式显示。用户可以选择他们要将哪些文件转换成 PDF ,并指定要将哪些样式表用于转换。作为最后一个步骤, servlet 将 DocBook 文件转换为 PDF ,并将 PDF 显示在用户的 Web 浏览器中。 Apache 的 FOP 资料库用于转换文档(参阅 资源 )。
如果您想使用我构建的应用程序,请编辑 Ebook.properties 文件,并提供到您的机器中某个位置的有效路径,该位置中存放 DocBook 和 XSL 文件。示例 DocBook 和 XSL 文件还可以下载。请将这些文件存放在您指定的位置中。
我已经提供了一份 Ant build.xml 文件来构建应用程序和将类封装到企业归档文件( EAR )中。将 EAR 文件部署到 JBoss 的目录中,并启动具有以下参数的容器:
-Xrunjdwp:transport=
dt_socket,server=y,address=4000,
suspend=n
现在,我们已经准备好在调试模式中连接代码
Intelli-J IDEA 调试
为了在Intelli-J中连接调试服务器,只需点击工具条中的Debug按钮,打开调试配置界面即可。然后选择Remote标记,来查看哪些调试配置可用。最初,没有配置可以使用。点击屏幕左上方的+按钮来添加新的远程调试配置。输入主机名称或者IP地址和要连接到的端口(参见图1)。
图 1. 远程 Intelli-J 调试
图中有一个 Intelli-J 中的连接到本地机器的远程调试配置。
确保服务器启动时具有已经为 VM 进行设置的调试选项,然后点击 Debug 按钮。您应当连接到 VM ,并且您的调试屏幕中将出现在 Intelli-J 屏幕的底部。您可以通过点击 Edit 窗口右边空白区域来轻松的在 IDE 中设置中断点。在中断的地方会出现一个红点。如果圆点中有一个 X ,则您指定的中断点无效,或者服务器中的代码在编译时没有打开调试。如果圆点中有一个校验标记,则说明您已经成功的连接到调试服务器,和已经选择了有效的中断点位置。您可以进行调试了。如果您使用的是本文提供的 示例代码 ,则请在 EJB 的 getDocBooks() 方法中设置中断点。将 Web 浏览器指向 http://localhost:8080/DocBookToPDF/DocBook.jsp 。您的浏览器应当显示为悬挂状态,并且 Intelli-J 在设置中断点的行中应当有一个蓝条。恭喜,您正在调试 EJB ,您的 IDE 已经为进入代码准备就绪(参见 图 2)。
图 2. Intelli-J 中断点
Intelli-J 中断点在其设置的地方以蓝色突出显示。图中,中断点已经设置,可以进行下一步骤。
们正在调试的方法查找在 DocBookToPDF.properties 文件中指定的目录,并返回所有以 XML 为结尾的文件。该方法假设每一个文档都是 DocBook 文件。在我们继续之前,确保目录具有有效的 DocBook 和 XSL 文件,以将文档转换为 PDF 。
完成进入代码之后,注意 JSP 在下拉列表中显示 DocBook 和 XSL 文件。下一步骤是调试 DocBookToPDFServlet servlet 。将中断点放在 Edit 窗口左边, processRequest() 方法中的某个位置。在 Web 浏览器中选择 DocBook 文件和有效的 XSL 文件,然后点击 Web 页面中的 Generate Book 按钮。 servlet 中的中断点将呈现为蓝色, servlet 代码可以进入。
NetBeans/Forte 调试
在 NetBeans 中创建一个项目,该项目包含您需要调试的代码。使用打开的调试选项编译它,并像在前面 Intelli-J 部分中讨论的那样,将应用程序部署到服务器中。我提供的 Ant build XML 文件演示了如何以调试模式编译代码。
为了开始调试,请选择 Debug | Start Session | Attach 菜单选项。这时,将出现一个对话框,要求填写连接信息。指定 JPDA 为调试程序, SocketAttach 为连接程序, localhost 为主机,端口 4000 为要连接到的器。点击 OK 按钮,您应当附加到 J2EE 容器的 VM (参见 图 3 )中。 Debug 窗口将成为活动窗口,您现在可以使用相同的方式来设置中断点,就像使用 Intelli-J 那样。在 EJB 的 getDocBooks() 方法中设置中断点,并将 Web 浏览器指向 http://localhost:8080/DocBookToPDF/DocBook.jsp 。 Web 页面应当显示为悬挂状态,而 NetBeans 中的中断点将被突出显示(参见 图 4 )。您可以在 IDE 中点击调试工具栏中的 Step Over 和 Step Into 按钮来进入 NetBeans 中的代码。您还可以在界面左边框架中设置观察。
图 3. 远程 NetBeans 调试
图中是 NetBeans 中本地机器的远程调试配置
图 4. NetBeans 中断点
NetBeans 中断点在活动状态时以绿色突出显示。图中是已经设置的中断点,已经准备好进行调试。
为了调试 servlet ,请在 processRequest() 方法中设置中断点。当 JSP 在 Web 浏览器中完成加载,并在机器中显示 DocBooks 和 XSL 文件的列表之后,选择 DocBook 文件和 XSL 文件,然后点击 Web 页面中的 Generate Book 按钮。在 NetBeans 中,中断点将变为突出显示状态,您可以开始调试 servlet 代码了。
Eclipse
为了在Eclipse中调试,需要在Java透视图中创建一个项目。如果您正在使用DocBook-to-PDF代码示例,则使用Ant build.xml编译代码,以编译打开调试的类。突出显示Java应用程序,并选择Run | Debug菜单项。此时,将出现一个对话框。突出显示Remote Java Application,然后点击对话框左手边底部的New按钮。对话框项目的名称应当为在Java透视图中突出显示的项目的名称。对话框中连接部分的主机字段应当是您需要连接到的服务器,端口字段中应当具有容器的VM正在使用的调试端口(参见图5)
图 5. 远程 Eclipse 调试
图中是 Eclipse 中本地机器的远程调试配置。
接下来,点击Debug按钮。Eclipse将转到Debug透视图。为了调试代码,请返回到Java透视图中,并在编辑器中打开EJB文件或者servlet。双击EJB的getDocBooks()方法的左手边的窗格来设置一个中断点。有效的中断点具有一个蓝色的圆球,并且圆球中有一个校验标记。如果中断点中没有校验标记,双击该中断点,然后尝试不同的点。
接下来,将Web浏览器指向相同的JSP和servlet文件,就像前面NetBeans和Intelli-J中所描述的那样。当设置中断点时,中断点所在的行将被突出显示,您可以像使用其他IDE那样来调试代码(参见图6)。
图 6. Eclipse 中断点
Eclipse 中有效的中断点以蓝色圆球和校验标记指示。该图说明了如何在 Eclipse IDE 中调试代码。当前的调试位置以绿色突出显示
使用具有流行 IDE 的 JPDA 资料库应当会缩短开发时间,并且允许您创建包含极少缺陷的更优秀的代码。如果您仍在代码中添加 System.out.println() 语句,以发现程序失败或者中断的位置,那么请住手!您是在浪费时间和金钱。 Java IDE 已经推出很长时间了,它可以提供功能强大的调试工具。您仅需要对启动 VM 的方法做一些小小的改动,就可以轻松地调试 Java 应用程序了。
E. java, cmd的使用
一、简述:
cmd中,执行java命令与javac命令的区别:
javac:是编译命令,将java源文件编译成.class字节码文件。
例如:javac hello.java
将生成hello.class文件。
java:是运行字节码文件;由java虚拟机对字节码进行解释和运行。
例如:java hello
二、详述:
下面我们来写个java文件试试。
1、打开记事本,输入一个类+主函数
public class Hello{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
2、点击 文件->保存,保存到相应文件夹下,文件名修改了xxx.java
3、在Hello.java文件夹内,空白位置,按住键盘Shift,右击鼠标,选择“在此处打开命令窗口”
4、输入 javac Hello.java 回车
如果java类书写格式没有错误,cmd不会报错,而且在java文件同目录内生成一个class文件。
5、输入 java Hello 回车
若输出下图,恭喜你,成功了!你已经把java类中,输出打印“Hello World”显示在cmd命令行中。
三、总结:
首先我们使用记事本编写java源代码,扩展名.java;
在命令行模式中,输入命令:javac 源文件名.java,对源代码进行编译,生成class字节码文件;
编译完成后,如果没有报错信息,输入命令:java Hello,对class字节码文件进行解释运行,打印“Hello World”。
为了方便大家理解javac和java编译运行过程,可以看下图:
至此,我相信大家应该对javac和java使用有了比较客观的了解。
四、答疑:
接下来,我们来看一下大家在实践中容易遇到的问题。
问题一:cmd命令一定要准确,区分大小写,注意是否要加扩展名。
javac Hello.java
java Hello
问题二:javac命令报错,如下图
javac命令报错,一般都是java代码有误,需要检查修改。
下图中,java代码很明显的错误,输出打印语句写在了main函数的外面,修改正确就不会报错了。
javac命令报错,去看java代码,肯定有错误。
问题三:javac命令执行完成,生成class文件,但是java命令报错,如下图
我查阅资料,找到报错的原因,首先检查java源代码,记住,java类不要加package路径!再就是java环境变量有问题,咱们一起来检查一下。
右击“计算机-属性-高级系统设置”,单击“环境变量”。我相信大家都已经配置java环境变量,咱们来检查一下。
逐一核对 ”JAVA_HOME” “Path” “CLASSPATH”
(1)"JAVA_HOME",变量值是你的电脑JDK的安装路径,我的是"D:\java\tool\java1.8\JDK"
(2)"Path",在原变量值的最后面加上”;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”
(3)”CLASSPATH”,变量值”.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”
特别注意变量值开头是”.;”(点分号),这个地方需要特别注意,我就是因为这个点和分号不对报错的。
java源码修改后,需要把之前生成的class文件删除,从新运行javac和java命令。
环境变量修改后,一定要重启cmd命令行窗口,再把把之前生成的class文件删掉,重新运行javac和java命令。
注:若在输入javac命令时,显示'javac'不是内部或外部命令,原因也是因为没有提前安装好JDK开发环境或环境变量配置有误。
F. 请详细写出Javac和Java两个命令的使用方式
javaac和java两个命令的使用详解:
一、javac命令
javac 用于编译Java文件,格式为:
java [options] [sourcefiles] [@files]
其中:
options:命令行选项;
sourcefiles:一个或多个要编译的源文件;
@files:一个或多个对源文件进行列表的文件,有时候要编译的文件很多,一个个敲命令会显得很长,也不方便修改,可以把要编译的源文件列在文件中,在文件名前加@,这样就可以对多个文件进行编译,对编译一个工程很有用,方便,省事。
有几个比较重要的选项:
-d 用于指定编译成的class文件的存放位置,缺省情况下不指定class文件的存放目录,编译的class文件将和源文件在同一目录下;
-classpath 可以简写成-cp,用于搜索编译所需的class文件,指出编译所用到的class文件的位置,如jar、zip或者其他包含class文件的目录,指定该选项会覆盖CLASSPATH的设定;
-sourcepath用于搜索编译所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目录;
需要注意windows下和linux下文件路径分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的区别:
windows下文件路径分隔符用 \ ,文件列表分隔符用分号 ;
linux下文件路径分隔符用 / ,文件列表分隔符用冒号 :
二、java命令
java 用于执行程序,格式如下:
java [options] classfile
options:命令行选项,一般用于 -classpath 指定要执行的文件所在的位置以及需要用到的类路径,包括jar、zip和class文件目录,会覆盖CLASSPATH的设定
三、脚本
如果要敲的命令很长,每次要编译运行的时候都要重新敲一遍,这是一件很痛苦的事情,所以用脚本可以大大方便你的工作量。在linux下用shell脚本,windows下用bat批处理程序。因为是在linux下,我这里只是简单介绍一下shell,关于bat批处理程序的语法自己网络一下,不难。
1. 开头
linux有很多不同的shell,通常使用bash(bourne again shell),程序必须以下面的行开始:
#!/bin/sh
#!用来告诉系统用后面的参数来执行程序,这里使用的是/bin/sh
要使你的脚本能够执行,还必须让这个文件有可执行权限,使用下面命令更改文件权限:
chmod +x filename
2. 注释
以#开始的句子表示注释,一直到这行结束,多写注释有利于以后重新看的时候知道自己在做什么
G. Java和c语言有什么区别
从概念上看,C语言是一门面向过程、抽象化的通用程序设计语言;Java是一门面向对象编程语言,而Java语言是从C语言衍生而来,它吸收了C++语言的各种优点,并且摒弃了C++里难以理解的多继承、指针等概念。从概念可以看出C语言相当于Java的基础语言,学完C再学Java会更容易。
从应用领域上,C语言和Java的应用领域几乎没有重合。因为随着这几年Java、web、PHP等语言的出现,它们凭借比C更简洁的、更安全的性能快速崛起,抢占了大量的市场。目前因为Java有完善的框架,在多线程、高并发方面有着较好的稳定性,所以Java主要应用于企业级应用开发、大型系统开发等领域。而C语言由于编程的复杂性,退守到了系统级别语言,而且因为想要系统级软件可以发挥出机器的功能,它的底层核心就需要用C/C++来编写,所以C语言主要应用于软件工业。
H. c语言和java哪个难
对于很多初学者来讲,不太清楚Java和C语言的区别,为了让那个大家更清晰的了解,近日特意给大家归纳了一些两者的大致区别,希望能够给大家带来一定的帮助作用,也欢迎大家进行详细补充和归纳。
首先,Java是针对于对象的机制,运算符“new”为每个对象分配内存空间,实际内存会随程序的运行而发生改变。在运行的同时每个Java系统会对内存进行扫描,会对整个系统资源进行“采集”。这个时候一部分的垃圾文件就会被删除或者暂时回收。这样就使得整个系统资源就使用的更加充分合理,程序员对于这点就不需要担心系统内存方面的一些管理要求,在编写程序的时候也就变得更加的简洁明了。而c语言则是通过malloc()和free()这两数据库函数来分别实现对于的内存的分配和内存的合理运用。
其次,C语言更多通过子函数调用,Java通过类和类引用,同时拥有非常多的接口。Java面向对象特征主要表现为封装,继承和多变,C语言支持“运算符的重载”,这个是数据抽象和泛型编辑的一大宝典。Java本身为了降低复杂性而不支持这种多变机制,对于Java可以支持方法重载和重写。
另外,Java比C语言多了一些修饰“Public、Private、Protected”都是一些比较常用的修饰符,而C语言没有这类的修饰语言,换句话的意思就是C语言还缺乏一定的安全性。
再者,Java不使用指针,但是指针是C语言的精髓,然而Java中更多的是对数据每一位的操作,比如substring等。
总结来讲,Java与C语言相比,Java具有简单、面向对象、分布式、健壮、可移植、解释性、安全、多线程、垃圾回收等等特点。而对于C语言则是一个比较宏观的领域,因此Java可以说是C语言的基础上开设,即C语是基石,Java在时下的运用和使用方面就比较全面。
I. java课程分享Java编程工具有哪些比较好用
一、Editplus
EditPlus是功能很全面的文本、HTML、程序源代码编辑器。默认的支持HTML、ASP、Perl、C/C++、CSS、PHP、Java、java和VB的语法着色。通过定制语法文件还可以扩展到其他程序语言。可以在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++写的,速度快、效率高。java课程http://www.kmbdqn.com/认为具有语法着色、代码参数提示、工程向导、代码自动完成、类向导等功能。先进次启动时提示设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、编译器及解释器路径,还可以在帮助菜单中使用JDKHelp。但目前这个版本对中文支持性不好。
J. JAVA的技术特点是什么
JAVA的技术特点是什么?
Java由美国SUN公司(被oracle公司收购)发明于1995年,是目前业界应用最广泛、使用人数最多的语言,连续多年排名世界第一,可以称之为“计算机语言界的英语”。
那么Java这么高的评价它的特点有哪些,下面我来为题主解答:
一、跨平台/可移植性
这是Java的核心优势。Java在设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。
Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class; 最后利用虚拟机(解释器,java)解释执行。如下图所示:
二、安全性
Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以很容易构建防病毒,防篡改的系统。比如Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的。
三、面向对象
面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!Java则是完全的面向对象语言。
四、简单性
Java就是C++语法的简化版,我们也可以将Java称之为“C++-”。跟我念“C加加减”,指的就是将C++的一些内容去掉;比如:头文件,指针运算,结构,联合,操作符重载,虚基类等等。同时,由于语法基于C语言,因此学习起来完全不费力。
五、高性能
Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使Java程序的执行效率大大提高,某些代码甚至接近C++的效率。
因此,Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。
六、分布式
Java是为Internet的分布式环境设计的,因为它能够处理TCP/IP协议。事实上,通过URL访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,Remote Method Invocation),使程序能够通过网络调用方法。
七、多线程
多线程的使用可以带来更好的交互响应和实时行为。 Java多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。
八、健壮性
Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java程序不可能造成计算机崩溃。即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该异常抛出,再通过异常处理机制加以处理。
以上几种特性你了解到啦吗? 记得给个赞!
当然这些还没完,Java除啦这些特性还有一些其他的特点我也来给你讲一讲!!
1.java的风格类似C++,从某种意义上讲,java是C++的一个变种。但是java摒弃了C、C++中的容易引发错误和难以理解的指针,结构,以及内存管理等;
2.java是一种强类型的语言,比C/C++检查还要严格,java区分大小写字母;
3.java禁止非法访问内存,因为java没有指针,内存的申请和释放;
4.对于不同的操作系统,会有不同的java虚拟机,这也就决定了java的可移植性;
5.java提供了自动垃圾回收机制gc,有效避免了C、C++的内存泄漏问题;
记得给个赞!