32.html
来自「写给JSP初级程序员的书」· HTML 代码 · 共 341 行 · 第 1/2 页
HTML
341 行
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="description" content="Java,JDBC,EJB,Open Source,jdk,rmi">
<meta name="Keywords"
content="Java, servlets, Java servlet, Javascript, ActiveX, VRML,
applet, applets, directory, news, jdbc, applications,
Java applications, Java developer, Java development, developer,
classes, Jars.com, Jars, intranet, Java applet, Javabeans,
Java products, JDK, Java development kit, java development environment, JIT,
JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources,
SUN, CGI, Perl, database, network, html,
xml, dhtml, rating, ratings, review, jars, cgi, programming,
software review, software rating">
<title>csdn_Java无用论</title>
<style>
.news { BACKGROUND: #007cd3; font-family: "宋体"; font-size: 9pt }
.t { font-family: "宋体"; font-size: 9pt }
.t1 { color:#007cd3; font-family: "宋体"; font-size: 9pt }
.white { font-family: "宋体"; font-size: 9pt;color:#FFFFFF }
.red { font-family: "宋体"; font-size: 9pt;color:#FF0000 }
A:visited {color:#0000FF}
A:hover {color: #ff6666; text-decoration: none}
.text {font-size: 12px; line-height: 160%; font-family: "宋体"}
.text1 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text1:visited {color:#000000}
.text1:hover {color: #000000}
.text2 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text2:visited {color:#000000}
.text2:hover {color: #000000}
.text3 {font-size: 12px; line-height: 100%; font-family: "宋体"; text-decoration: none}
.large {font-size: 14.8px; line-height: 130%}
</style>
</head>
<body
<center>
<tr>
<td WIDTH="100%" VALIGN="TOP">
<tr>
<td WIDTH="100%" CLASS="white"></td>
</tr>
<tr>
<td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>Java无用论</td>
</tr>
<tr>
<td WIDTH="100%" bordercolor="#FFFFFF" CLASS="t" bgcolor="#F0F0F0" colspan="2">
<p><font size="2" color="#000000">1. 写这篇文章的目的 <br>
学了一些关于Java的东西,个人认为它很不好用。为了减少上当人数
特写此文。 <br>
尽管 java 宣称它是100%面向对象,而C++不是。但是宣称100%面向
对象本身就不是什么面向对象的思想。面向对象的本质目的是提高生
产率。讨论一种语言是否100%面向对象就好像讨论我们的社会性资性
社一样滑稽。其实学习面向对象不一定非要使用java不可。我反而认
为120%面向对象的C++是不错的选择。<br>
Java号称跨平台,其实这是只一个梦想,也不妨用骗局这个词来形容
。软件的移植性仅仅和虚机相关吗?照此理论是不是可以说符合IA32
体系的软件在任何IA32体系上都能正常运行。那我怎么没看见SCO:
:lf 在 NT上运行?显然,除了虚机,软件二进制规范(执行文件格
式、连接方法)、运行时间库和系统调用也是软件移植问题因素。而
java规范中显然不包括完整的运行时间库和系统调用,甚至二进制规
范也有不兼容的地方(比如本原接口和固有接口)。软件总不能脱离
它的运行环境,不兼容就从这里开始。 <br>
要提高软件生产效率。应当认认真真的研究系统结构、二进制规范、
系统调用结构才是解决问题的方法。靠概念游戏这种投机取巧的方法
是行不通的。 <br>
我说java不好,甚至不必对其侧目,你信吗?我估计信的人不多。我
只是想说"上当之后别怪我没说"。
另外如果您在Java中发现了甜头也不妨告诉我。互相学习吗:)。 <br>
2. Java究竟是什么? <br>
Java是一种虚拟硬件系统结构,是一种软件二进制规范,是一种编程
语言。当我们看到Java一词时,它可能表达上述三个含义钟的任何一
个。尽管这三个东西可以独立存在,不过实际上他们总是在一起出现
。所以也很少有人分的那么明确。使用Fortran语言编写Java虚机上
的代码理论上是可行的。但是有谁乐意做这件事呢? <br>
作为虚拟硬件体系结构,
Java虚机和ALPHA、PowerPC、SPARC、IA32、51、960是同一概念上的
东西。也许您会奇怪?他们怎是同样的东西呢?IA32不就是PIII、PI
V那一大块吗?其实不然、我们知道386、P5、P6、P7的内部结构非常
不同。属不同的微体系。但是他们实现了相同的IA32指令集合。IA32
也不一定非要通过硬件实现,通过软件也可以。这种软件CPU产品广
泛出现在操作系统和CPU密集软件的开发、调试工具上。主要用于在C
PU出现之前调试软件。Java指令集同样也可以通过硬件实现。只是在
半导体工业激烈竞争的时代,没有大公司(含SUN)愿意把这么做。
SUN常常说M$很害怕java。他们之间的确存在很强的竞争关系。倒不
是Java高级语言的问题,我认为是Java二进制规范和 Windows操作系
统存在竞争。不妨考察Java中的(.class文件格式、装入方法、执行
过程、JDBC接口、J3D接口)和Windows中的(PE文件格式、DLL文件格
式、装入、连接方法、ODBC、Direct3D)。就知道竞争多么强烈。和N
T/IA不同。Java.exe执行程序包含虚机规范和二进制规范。在NT/IA
中是分离的产品。 <br>
人们总喜欢把Java高级语言和C++类比,他们之间的确存在很过相似
的地方。不过我认为C++和Java不存在什么竞争。它们使用在不同的
场合。他们的区别(内存管理、对象类型、线程规范)决定他们的用
途。用形似而神不似来形容C++和Java吧。仅从高级语言方面来看。J
ava真正竞争来自ECMAScript 。也就是JScript和VBScript。 <br>
3. Java虚机和IA32比较 <br>
Java VM和IA32最大的区别是Java VM的主要实现不考虑效率问题。由
此派生出寄存器少,指令结构简单(同样功能生成的程序代码长),
寻址空间小,寻址方法少、数据类型少等。除了上述问题,Java VM
没有涉及指令(显式或隐式)并行问题。 <br>
3.1. 基本特性差别 <br>
3.1.1. 数据类型比较 </font></p>
<p><font size="2" color="#000000">Java VM <br>
IA32 <br>
整数类型 <br>
byte <br>
short(16bit) char(UnionCode) <br>
int <br>
long (64bit) <br>
{不存在无符号算术运算指令,另外注意这里没有boolean类型} <br>
byte <br>
Word(16bit) <br>
DoubleWord(32bit) <br>
QuotaWord(64bit) <br>
DoubleQuotaWord(2*64bit) <br>
BCD/PackedBCD <br>
BitField <br>
{存在有符号和无符号两种运算指令} <br>
浮点类型 <br>
float(32bit) <br>
double(64bit) <br>
float(32bit) <br>
double(64bit) <br>
long double(80bit) <br>
Packed double(2*64bit) <br>
地址 <br>
returnAddress* <br>
8bit , 16bit , 32bit , 48bit都有 </font></p>
<p><font size="2" color="#000000">没有显示的看到returnAddress
类型的宽度,不过。通过指令goto(0xa7)和goto_w(0xc8)来看。retu
rnAddress是可以是16位或32位的。 <br>
关于double和Long的原子问题:在目前的java规范中,double和long
作为两个独立的32 位数据独立存取。这样可能产生同步问题。历史
上Intel的CMPXCHG8B(Pentum pro以上CPU提供)指令就存在过类似
问题,一度被指责是CPU设计问题。好在CMPXCHG8B很少使用,没有造
成什么事故。 <br>
3.1.2. 指令集 <br>
指令类型 <br>
JavaVM <br>
IA32 <br>
Load/Store <br>
1) 数据和运算栈之间单个移动 <br>
2) 常数移入运算栈 </font></p>
<p><font size="2" color="#000000"><br>
1) MOVE <br>
2) CMOVEXX <br>
3) 交换,琐操作 <br>
4) PUSH/POP <br>
5) PUSHA/POPA <br>
6) IN/OUT <br>
元算指令 <br>
add , sub , mul , div , neg , rem , shl , or , and , xor <br>
比Java多多了,主要多在显式并行上
类型转换
基本类型之间可以互相转换
有(由于类型很多,转换指令也有很多)
方法调用
4条指令
一大堆,主要多在权限切换(调用门)、长短跳传不同上。 </font></p>
<p><font size="2" color="#000000">3.1.3. 异常 <br>
虽然JavaVM有异常的支持,不过很简单。它不区分中断、陷阱和故障
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?