JAVA给你讲它的故事

计算机语言若是你将它当作一个产品,就像咱们平时用的电视机、剃须刀、电脑、手机等, 他的发展也是有规律的。

任何一个产品的发展规律都是:向着人更加容易使用、功能愈来愈强大的方向发展。java

    那么,咱们的计算机语言的发展也是这样,向着人更加容易使用,即更加容易写代码、更加容易实现现实逻辑的方向发展。套用奥林匹克的口号“更高、更快、更强”。那么计算机发展的主线能够总结为四个字:“更易、更强”。c++

    这个”更易、更强”的主线,也适用于任何的产品。若是,读者朋友之后要开公司创造本身的产品或者服务(服务也是一种产品)。你的产品是否符合”更易、更强”这个规律,也决定了产品可否取得成功,可否击败现有市场上同类型的产品!固然,也直接决定了你可否发财,可否养得起老婆孩子啦!程序员

    计算机语言通常意义上划分为:编程

blob.png

第一代语言:机器语言

    咱们都知道计算机的基本计算方式都是基于二进制的方式。以下就是一段典型的机器语言代码:c#

 

blob.png

    这种代码是直接输入给计算机使用的,不通过任何的转换!固然,在计算机刚发明的时候,计算机也是稀罕物,人却有不少。物以稀为贵嘛,人就只能迁就计算机,采用了这样一种计算机能够直接识别的代码。固然,这种代码计算机很是受用,不须要作任何转换,直接执行,太爽了!windows

    但是,人就不爽了!这样的代码,又有几我的能写,又有几我的能读懂!若是用来解决最简单的计算问题,凑合着用,没问题。若是要解决复杂问题,须要写几千行、几万行这样的代码,估计谁写谁疯。若是如今咱们仍然使用第一代语言,我相信全部程序员最终只能将精神病院做为最后的归宿了。缓存

第二代语言:汇编语言

    为了解决机器语言没法读懂的问题。很天然,咱们就想到能不能使用人能够读懂的单词来代替一些二进制指令和数据,方便咱们人去读、编写代码。因而,汇编语言诞生了。他使用了大量的助记符来代替二进制指令,方便咱们人去编写代码。以下是一段典型的汇编语言代码:安全

blob.png

    显然,这样的代码,要比起机器语言来,对于咱们程序员来讲,爽了不少,至少不须要再去背诵那些难记的二进制指令了!因而,有了更好的武器,意味着咱们能够解决更复杂的代码,写个几百行、几千行汇编语言代码也成为不那么复杂的事情。服务器

    【注】如今仍然有不少领域在使用汇编语言,好比:操做工业机器人、单片机编程、甚至某些计算机病毒的编写等。网络

第三代语言

     随着晶体管、集成电路的出现,计算机的功耗愈来愈小、速度愈来愈快,计算机很快深刻到了各行各业。有个很著名的定律叫作摩尔定律,他深入的展现了计算机发展的规律:

“当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增长一倍,性能也将提高一倍。换言之,每一美圆所能买到的电脑性能,将每隔18个月翻两倍以上” 

摩尔定律在咱们身边有着实实在在的体验,咱们如今手边用的电脑、手机比起十年前强大的不少倍,可是价格实际上确愈来愈低!十年前,北京房价是3000一平的地方,如今涨到了4万,涨了十多倍。十年前,一个笔记本须要两万人民币,如今只须要几千元,可是性能确更好。咱们多么但愿,房价也能遵循摩尔定律啊!

这样,随着计算机深刻更多的企业、单位、甚至更人。咱们很天然的就但愿使用计算机解决咱们身边的问题。这种需求愈来愈明确,愈来愈复杂。汇编语言在体系结构设计上的缺陷,根本没法胜任解决复杂问题。使用汇编语言写几万行代码,几十万行代码,那真的能够称之为”噩梦”.

因而,各类各样,结构化设计更加优良的第三代语言诞生了。例如:C语言、Fortran、cobol、pascal、ada、c++、java、c#。

第三代语言数量众多,大致上分为:面向过程和面向对象两大类。C语言是典型的面向过程的语言。C++、JAVA是典型的面向对象的语言。

你们在学习过程当中,不要有这样的误解。学了面向过程会对学习面向对象有很差的影响,影响思惟。那纯属扯淡,只能说明你面向过程根本没入门! 事实上,面向过程和面向对象是相辅相成的。在面向对象编程中,也离不开面向过程。关于,面向过程和面向对象的区别,咱们将在面向对象章节中详细说明。

C语言

    第三代语言中,C语言是最重要的!能够称之为“现代语言的鼻祖”。其余不少语言都跟C语言有千丝万缕的联系!

C语言是一种计算机程序设计语言,它既具备高级语言的特色,又具备汇编语言的特色。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已前后被移植到大、中、小及微型机上,它能够做为工做系统设计语言,编写系统应用程序,也能够做为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围普遍,具有很强的数据处理能力,不只仅是在软件开发上,并且各种科研都须要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用好比单片机以及嵌入式系统开发

C++语言

显然就是C语言的升级版,看名字咱们就知道了,就是C语言面向对象的版本!在C基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。

JAVA语言

SUN公司的JAVA也是以C/C++为原型开发的,甚至有人将JAVA称之为“C++-”(C加加减).看名字就知道是将C++中某些不太好用的地方砍掉!

Object-C语言

如今IOS和Mac开发中的主流语言。 根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。 

C#语言

微软发明的一种但愿替代JAVA的语言。盖茨曾经很是承认JAVA,,“JAVA是我见过最好的语言”,所以,微软跟JAVA曾经有一段蜜月期,合做很是好。可是后来因为版权纠纷,闹掰了。盖茨一怒之下,就要搞一个比JAVA更好的语言。所以,咱们在C#中能够看到大量的JAVA中有的特性,很是明显的”山寨”,固然也能够称为”微创新”。创新都是源自”山寨”。可是,微软山寨了JAVA的细节,可是没有学到JAVA的精华,即跨平台。固然,这跟微软自己的公司特性有关,微软名字叫作:Microsoft,可是咱们知道他的核心产品是windows,因此他但愿将他全部的产品都跟windows绑定再一块儿,这样C#就失去了JAVA的跨平台的优点。

附:贝尔实验室(IT行业的圣地)

晶体管激光器太阳能电池、发光二极管、数字交换机通讯卫星、电子数字计算机、蜂窝移动通讯设备、长途电视传送、仿真语言、有声电影立体声录音,以及通讯网、C语言、C++语言等许多重大发明的诞生地。

附:历史上最古老的IT公司IBM

IBM(International Business Machines Corporation),国际商业机器公司,或万国商业机器公司的简称。总公司在纽约州阿蒙克市,1911年创立于美国,是全球最大的信息技术和业务解决方案公司。

附:微软的前景堪忧

微软的核心产品是windows. 微软的成长基本上跟我的电脑PC的普及和发展是同步的。可是,随着手机、平板电脑的发展,咱们发现我的电脑的地位明显的在降低,这也意味着 windows的地位在显著的降低。“成也PC,败也PC”. 若是,微软不在手机和平板电脑上发力,将不可避免的沦为”第二个诺基亚”。

附:山寨和创新

任何一种创新都不是凭空天上来的, 都是基于之前的旧事物发展的。都是一种”山寨”. 咱们看到计算机语言的创新史其实就是一部山寨史。固然,若是把别人的跌出拿来只换个名字那叫耍流氓、不要脸,是真的”山寨”。 若是把别人的东西拿来进行改进,作的更好,那才就叫”创新”。

附:到底应该学哪门语言

    不少童鞋会有疑问,到底应该学什么语言呢? 纠结了很长时间,仍然没有下手。个人说法是,JUST DO IT!学了再说。其实,天下文章一大抄,语言之间当然有差别,可是隐藏在语言背后的编程思惟方式没有差异。若是你精通了一门语言再去学其余语言,很快就能够上手。

纠结是个坏毛病。小时候,总是纠结于之后作爱因斯坦呢仍是盖茨呢?纠结了不少年。长大了,才发现真的是想太多了!

JAVA语言的发展史

SUN公司介绍

       SUN公司全称是:Stanford University Network.  SUN公司是从斯坦福大学孵化器出的高科技公司。创立后,曾经市值名列IT公司第一位。在2001年时,市值2100亿美圆,远超过google公司、IBM公司。SUN公司不只战胜了包括 IBM 在内的所有工做站(Work Station)和小型机(Mini Computer)公司,并且依靠它的 Solaris(一种Unix)和风靡世界的 Java 程序语言,成为在操做系统上最有可能挑战微软的公司。太阳公司不乏能人,它不只为 Google 培养了 CEO埃里克.施密特和首任工程部副总裁韦恩.罗森(Wayne Rosen),而且在必定程度上奠基了今天 Google 工程部门的基础。

blob.png

固然,今天的SUN公司已经一落千丈,而且被oracle公司收购。sun公司从成立到市值2000亿美圆通过了20年,可是走下坡路只用了1年时间!这就是IT行业的残酷性!

JAVA的诞生和核心特色

       上世纪90年代初,SUN公司的James Gosling(高司令,^_^)领导的Green项目,着力打造一个分布式的、能够在消费类电子产品(如电视机顶盒)使用的系统架构。

这种架构中,要求写的代码能够运行在各类消费类电子产品中,即要求代码的中立性、跨平台性。

最初,Green项目使用的C++,可是在研发过程当中发现C++并不能很好的适应新的需求。因而,这些高人对C++编译器作了改写,仍然不太理想,不太符合跨平台的特性。 牛人有牛人特有的牛脾气,因而,你们决定重起炉灶,开始研发一种新的语言,即JAVA. 

blob.png

通过一年半的研发,整个产品研发完成。可是,很遗憾,消费类电子产品并无高速的发展起来,JAVA进入蛰伏期。

【注】跨平台特性,始终是JAVA的核心优点!

JAVA的飞速发展

      无意插柳柳成荫!90年代中末期,有一个改变世界的大事出现了:互联网的爆发式增加。在传统产业,例如钢铁产业要想取得产量翻番,那须要不少年的时间。可是,在互联网行业都是呈指数级增加,爆炸式的增加。google能够在短短几年就增加到上千亿美圆市值。

     互联网将各类各样的电脑连到了一块儿,这时,咱们发现电 脑的操做系统各类不一样。所以,急需一种跨平台的语言,经过它编写的程序能够在各类平台上运行。JAVA正好符合这种需求。使用JAVA编写的applet程序给了90年代的人们极大的震撼,因而JAVA迎来了他的黄金时代!

JAVA诞生后,经历了以下版本的发展变化:

•    1991年,Sun公司的Green项目,Oak

•    1995年,推出Java测试版

•    1996年,JDK1.0

•    1997年,JDK1.1

•    1998年,JDK1.2,大大改进了早期版本的缺陷,是一个革命性的版本,改名为Java2

•    2004年,J2SE 5.0 (1.5.0)  Tiger老虎

•    2006年,J2SE 6.0 (1.6.0)  Mustang野马

•    2011年,JAVASE7.0 

JAVA的特性和优点

简单性

        就是c++语法的纯净版。没有头文件,指针运算,结构,联合,操做符重载,虚基类等等。因为语法基于c,所以学习起来彻底不费力。

面向对象

        面向对象是一种程序设计技术,他将重点放在数据(即对象)和对象之间的接口上。

可移植性(跨平台性)

       这是JAVA的一个重要的优点。JAVA代码或者说字节码、二进制码能够跨平台的移植,而不用管具体的操做系统和硬件环境。JAVA自己就是面向网络的,只有在网络环境中才能显示出他的优点,好比:如今我有一个网络环境,要让个人笔记本和手机交互,笔记本环境是windows发出一个让手机定时录音的JAVA代码,手机只有简单Linux内核操做系统,照样能够完美的执行这个代码。

“一次编写,随处运行”:“write once, run anywhere”

       JAVA在设计时就很注重移植和跨平台性。好比:JAVA的Int永远都是32位。不像c++多是16,32,多是根据编译器厂商规定的变化。这样的话程序的移植就会很是麻烦。

高性能

       JIT(JUST IN TIME)即时编译。将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在须要的时候从新调用。这样的话,使JAVA程序的执行效率大大提升,某些代码甚至接待c++的效率。随着这种技术的一每天完善,也许有一天会超越编译代码的效率。

分布式

       JAVA是为internet的分布式环境设计的,由于他可以处理tcp/ip协议。事实上,经过url访问一个网络资源和访问本地文件是同样简单的。Java还支持远程方法调用(RMI,remote method Invocation),使程序可以经过网络调用方法。

动态性

       就是在须要时将某些代码添加到正在运行的程序中。反射机制。当须要把某些代码添加到正在运行的程序中时,动态性是一个很是重要的特性。Java的动态特性是其面向对象设计方法的扩展。它容许程序动态地装入运行过程当中所须要的类,这是C++语言进行面向对象程序设计所没法实现的。

多线程

       多线程的使用能够带来更好的交互响应和实时行为。多线程的简单性是Java成为主流服务器端开发语言的主要缘由之一。

安全性

       Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java能够构建防病毒,防篡改的系统。

健壮性

       Java是一种健壮的语言,吸取了C/C++ 语言的优势,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java程序不可能形成计算机崩溃。Java系统仔细检测对内存的每次访问,确认它是合法的,并且不致引发任何问题。不过,即便Java程序也可能有错误。若是出现某种出乎意料之事,程序也不会崩溃,而是把该例外抛弃。再经过异常处理机制,程序就会发现这类例外,并加以处理。

JAVA三大版本的区别

      SUN公司推出了JAVAEE、JAVASE、JAVAME适应各类不一样平台上的开发和运行工做。咱们之后的学习会围绕他们开展起来。

blob.png

•    J2EE (JAVAEE)

–    Java 2 Enterprise Edition:

–    定位在服务器端的应用

•    J2SE  (JAVASE)

–    Java 2  Standard  Edition

–    定位在我的计算机上的应用

•    J2ME  (JAVAME)

–    Java  2  Micro  Edition

–    定位在消费性电子产品的应用上。 

JAVA语言为何可以成功 

        一个产品的成功和一我的的成功是一个道理。除了自身具有过硬的优点外,还须要那么一点点狗屎运,甚至狗屎运很是关键。就是咱们所讲的天时地利人和。JAVA的成功除了本身具有跨平台特性外,更重要的是正好踩中了互联网发展的节奏。微软的成功除了windows好用外,也是正好踩中了我的电脑发展的节奏。因此,咱们除了本身努力外,也须要出去走走努力才踩一坨狗屎才行

附:斯坦福大学的房产生意经

       斯坦福大学依靠自身庞大的校区,建立了斯坦福科技园(硅谷的前身),初期采用房租免费等方式,鼓励本身的毕业生在科技园创业、鼓励社会企业入驻。因为免费的方式再加上其余优惠的政策,吸引了大量的创业者加入进来。最终你们添柴加火,造就了今天的硅谷。这才是最高明的房地产商啊!相比我国的房产商杀鸡取卵式的发展,无语!北京五环外房价都3万多了,一个精英人才就算是年薪20万,买个100平的房子,须要不吃不喝15年!若是要吃喝的话,基本一生都在为这100平的房子打工!赤裸裸的剥削至此,还有什么话说!

附:跟斯坦福大学有关的IT公司

牛逼的大学,难以想象的大学。看看这个大学的毕业生和教授创立的公司:

1.    惠普公司

2.    SUN公司

3.    思科公司

4.    雅虎公司

5.    Google公司

6.    英特尔公司

7.    NVidia(最大的显卡公司)

8.    耐克(卖鞋的,斯坦福除了IT还有耐克)

相关文章
相关标签/搜索