• java 浅谈


    一场旷日持久的战争

    聊到java,不得不说c语言的帝国

    • 1972年c语言的诞生
      • 贴近硬件,运行极快,效率极高。 (因为它也有汇编语言的特点)
      • 操作系统,编译器,数据库,网络系统等
      • 但是c语言为程序员按上了两个沉重的枷锁  指针和内存管理虽然指针无比的强大,能够直接去操作list,但是c语言并没有给程序员一个工具,去做一些越界的检查。导致新手程序员经常容易犯错至于内存管理,c语言完全的放任的。自己申请的空间,自己去释放。这对程序是要命的,因为这些错误在编写的时候是看不出来的。只有在运行的时候才会突然暴露。常常让程序员手忙脚乱,昏天黑地的去调试。他们大量的时间和精力都被花费在小心翼翼的去处理指针和内存的分配上。正是这样,所有的程序员都被搞得焦头烂额。        在开始的时候,c语言告诉人们,他们是可移植性的。它说我们只要在这一台机器上写的代码,在另一个机器上编译就可以了。它要求所有的人尽可能的去使用它们c的一个函数库。针对不同的平台,每个平台它都要写一份函数库,有一点小小的错误就会导致编译失败。        真是因为这样的 “暴政”,固然c语言效率特别的高,也慢慢不再受喜欢了
    • 1982年c++诞生
      • 面向对象
      • 兼容c
      • 图形领域,游戏等
      c++性能比较好,有了静态类型的检查。但是它更复杂,很多人无法完全去掌握这门语言。它的复杂度使的很大一部分人在学习的过程中就放弃了编程。

    真是因为这样的缺点,使的有一群人想要去建立一种新的语言。那么对于新的语言为了让更多的人接受,这个新语言就要具备更多的有点

    • 建立新语言
      • 语法有点像c
      • 没有指针
      • 没有内存管理
      • 真正的移植,编写一次,到处运行
      • 面向对象
      • 类型安全
      • 高质量的类库
      • ...

    最开始 他们起了一个名字叫做 c++--,就是在c++上去掉它的一些不好的地方。后来发现设计理念偏差的太多了,因为他们想要另起炉灶重新定义一门语言。有换名字叫做oak,后来注册的时候发现有人已经注册了,后来讨论的许久就命名为了java。        另外为了实现真正的移植性,他们在每个操作系统之上又抽象了一层,叫做jvm 虚拟机

    •         Java出生创建完成java之后,他们为了吸引更多的人加入,他们搞了一个演示。向大家展示java的能力。但是刚刚出生的java还没有完善。演示点什么好呢,于是他们把眼光定向了1995年刚刚兴起的一个互联网,所有的网页刚刚出生的时候特别的丑
      • 1995年的网页简单粗糙,缺乏互动性
      • 图形界面的应用程序(Applet)于是他们在浏览器上弄了一个小插件,把java运行环境放了上去。然后在上面开发了一个叫图形界面的程序Applet,Applet早年我们都是要学习的,当然现在己经被淘汰了,现在的js比较流行对不对。但是在这让早年的程序看到都会发出:哇!这是什么东西,这么厉害。它让那些简单粗糙的网页看起来更美轮美奂,震撼人心了一些。于是乎,java活了,通过Applet,无数的程序员看到了java这门语言。了解了java语言的特性之后呢,许多无法忍受c语言暴政的程序员很快加入了他们,就连当时的网络巨头也纷纷加入合作(包括Oracle,微软),从此,java越来越强大了。
      BILL Gates说:这是迄今为止设计的最好的语言!微软的比尔盖茨对java的高度评价大量的巨头加入但是比尔盖茨在买了java的许可证之后,在微软的电脑上也支持了java,但是他想偷偷的修改Applet,把Applet彻底绑死在自己的windows上赚钱,这样java将变得不可移植。        而这时java所不能忍受的,于是java和微软就发生了“战争”,于是java逼着微软退出了java。然后微软有开发了一个.net,当然这时后话,我们不再聊。然后在95到97年java不断的开疆扩土,然后用java的程序员达到了几十万之众,这在世界上是不可忽视的力量。然后程序员忽然发现一个事情,java似乎除了Applet根本干不了其它的事情。然后c语言的就开始嘲笑,java就是一个玩具,它只可以在网页上弄弄东西。        然后经过密谋,java王国确定排出三个部队,向外扩张,就是下面的三个部队。
      • java 2 标准版(J2SE):去占领桌面
      • java 2 移动版(J2ME): 去占领手机
      • java 2 企业版(J2EE):去占领服务端
      但是很快,有两只大军就败下阵来,其中开发桌面端的首领发现,开发桌面的程序员根本接受不了java,虽然可以开发出桌面,但是开发出的桌面非常的难看。和原生的桌面差距比较大。尤其是为了运行程序还需要安装一个虚拟机。这让大家都接受不了。        当然J2ME也是这样,在手机领域根本不受待见。当然,我认为主要的原因还是当时的移动互联网还没有兴起。那失之东偶,收之桑榆。J2EE赶上了最好的时代,那时的互联网是不是发展了,然后大家忽然发现java,简直就是为了服务器端程序而设计的语言。它不仅强大,健壮,安全,简单,而且跨平台。在咱们这个J2EE的规范指导下,发现他们特别时候一些团队开发一些大型项目。然后他们授权了baa公司,这是一个特别小的公司。第一个使用J2EE的许可证,然后这个公司推出了一看产品 叫做,weblogic
    • Java的发展
      • 他们基于java开发了巨多的平台,系统,工具
        • 构建工具:Ant,Maven,Jekins
        • 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic
        • web开发:Struts,Spring,Hibernate,myBatis
        • 开发工具:Eclipse,Netbean,intellij idea,Jbuilder
        • ...
      weblogi凭借它的集群功能,第一次展示了复杂应用的可扩展性和高可用性,        这里有一个三高问题:                        高可用                        高性能                        高并发这个后来被称为中间件的东西,把程序员从事务管理,安全管理,权限管理等方面解放出来了。让他们能够专注业务去开发。这立刻捕获了大量程序员的心。很快 ,java的程序员就达到了数百万之众。群众的力量是无穷的是吧,巨头们也纷纷入场,尤其是 IBM,IBM是我们世界上最古老的一家IT信息管理的公司,他在我们java上疯狂投入,他不仅在java上开发里自己的服务器,叫做Websphere 。还推出了一个Eclipse,这样一个极具魅力的开发平台。        早年间我们都在使用Eclipse,现在在企业中一些年纪比较大的程序员依旧在使用Eclipse。极具魅力!当然IBM利用java获得了一笔可观的收益,不仅是软件,硬件,还有服务器。三个地方齐头并进。把IBM这家公司也推向了一个新的高峰。        那个时候都没有想到,除了商业巨头外,我们程序员对java也是这么的热爱。大家基于java开发了非常多的平台。比如Tomcat,Maven,Spring,*myBatis那么通过这些框架,程序员可以专注于业务相关的开发,而不用去专注于一些事物的开发,还有一些开发工具可以帮助我们简化开发步骤,帮助我们快速的开发我们的项目。        以上的工具,大部分都是开源的。那么微软,只能眼睁睁的看着服务器端的市场被java一点点的占领。但是他们怎么会善罢甘休呢,于是他们赶紧退出了自己的.net,咱们刚刚已经说到了。但是咱们java已经不在乎了。因为.net 是封闭的,所有的东西是自家的。开发工具:vs 应用服务器是他们的 ios ,数据库服务器是SqlServer。只要你了.net。就会绑定上了微软。而微软的一些系统,只能运行在windows的服务器上。而这个服务器在高端市场的占用率,实在是太低了。                然后在java发展的途中,它也受到了一些新势力的打击。比如如php,Python,这些但是这些都只适合开发一些简单的web网站。但是对于真正大型的网站都是我们java来做的。所以这些语言对我们java并没有产生实际的冲击力。
      • 2006:Hadoop(大数据领域)而在2006年一支叫做Hadoop的军队使得java入侵了大数据领域。
      • 2008:Android(手机端)2008年Android横空出世,java王国在谷歌的帮助下,以意想不到的方式占领了手机端,完成了当年j2ME没有完成的事业从此 一个伟大的帝国诞生了!故事到这里就结束了。大家可以从故事中吸收一些有效的信息来对自己有帮助。

    那么截止到目前,有几千万的程序员会java。但是将java精通的人我认为只有百分之一。所以我们要争取做那百分之一的人。

  • 相关阅读:
    聊聊部署在docker容器里面的springboot项目如何启用arthas
    如何低侵入的记录调用日志
    聊聊如何在spring事务中正确进行远程调用
    聊聊因不恰当使用alibaba sentinel而踩到的坑
    SqlServer行转列关键字——Pivot
    [转] 为后人挖坑指南
    动态加载js并调用其中指定名称方法
    Html网页模态居中弹窗
    SqlServer 要了解死锁必须学会制造死锁
    SqlServer中的(分区)表文件组
  • 原文地址:https://www.cnblogs.com/accumulater/p/14282740.html
Copyright © 2020-2023  润新知