Java编程语言的历史和未来

通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用!

作为Internet上著名的编程语言 ,Java对人们如何浏览数字世界产生了深远的影响。 Java功能设置了用户对他们访问互联网的设备的性能期望的大部分。 但是,您不必成为开发人员即可了解其影响。

Java的历史可以追溯到20多年,并且随着世界的数字化转型而发展。 随着消费者和企业对可伸缩性的需求增加,Java被迫发展和适应以保持相关性。 利益相关者正在使用有关Java的历史,当前使用和未来方向的入门资料来进行工作。

Java的历史:时间表

早期发展

Java是Java先驱James Gosling的创意,James Gosling将Java的核心思想“一次编写,随处运行”追溯到他在研究生院所做的工作。

在IBM工作之后,Gosling于1984年加入SunMicrosystems。1991年,Gosling与Sun的同事Michael Sheridan和Patrick Naughton合作开发了Green Project,以开发用于对下一代智能设备进行编程的新技术。

Gosling,Naughton和Sheridan着手根据某些规则开发该项目。 它们专门与性能,安全性和功能相关。 这些规则是Java必须是:

  1. 安全可靠
  2. 高性能
  3. 可移植且与体系结构无关,这意味着它可以在软件和硬件的任何组合上运行
  4. 线程化,解释性和动态
  5. 面向对象

随着时间的流逝,该团队增加了功能和改进功能,扩展了C ++和C的传家宝,从而产生了一种名为Oak的新语言,以Gosling办公室外的一棵树命名。

在使用Oak用于交互式电视的努力未能实现之后,该技术被重新定位为万维网。 该团队还开始使用Web浏览器作为演示平台。

由于商标冲突,Oak被重命名为Java,并在1995年发布了Java 1.0a2,以及名为HotJava的浏览器。

开发人员招待会

Java在软件社区中受到开发人员的好评,尤其是因为Java是根据“一次编写,随处运行”(WORA)理念创建的。 这种灵活性源自Java的Bytecode编译功能,该功能绕过了不同系统基础结构的潜在障碍。 Java是一种独特的编程语言,因为它在本质上首次解决了可移植性问题。

在很短的时间内,Java可用于开源。 Sun Microsystems 于2006年进行了此转换,以防止市场分散化并吸引主要在开源平台中工作的开发人员。 但是,这是短暂的,因为甲骨文在2010年接管Sun Microsystems时减少了工作量并恢复了商业许可。

Java的年龄和普遍性意味着大多数程序员一次或一次都遇到过Java,即使不是全职工作。 鉴于庞大的用户群,对于Java是否仍然有用,人们存在不可避免的意见分歧。

除Java外,开发人员似乎还在探索其他选择。 根据2016年9月的TIOBE Index,Java作为一种编程语言的流行正在下降 。 但是,它仍然是最广泛使用的语言,它超越了.NET并保持了前几年的顶级位置 。

Java的优势

作为开发人员,您可能已经意识到使用Java的优势,这有助于解释Java为什么是当今企业中使用的领先编程语言之一:

  • 垃圾收集– C和C ++等语言要求您手动清除创建的对象,这与Java的内置垃圾收集形成鲜明对比。
  • 详细的静态语言–由于Java具有强大的固有固有静态特性,因此易于维护和阅读。 Java使您能够返回多种类型的数据,并且可以轻松地在各种企业级应用程序中使用它。
  • 可移植性–诸如Apache Maven和开源之类的协作自动化工具都对Java友好。 AppDynamics也不例外:通过关键的Java调整和性能分析指标了解JVM的运行状况,包括:响应时间,吞吐量,异常率,垃圾收集时间,代码死锁等。
  • 易于运行,易于编写–只需编写一次Java,您几乎可以随时随地运行它。 这是Java的基石力量。 这意味着您可以使用它轻松创建移动应用程序或在使用不同操作系统和服务器(例如Linux或Windows)的桌面应用程序上运行
  • 适应性– Java的JVM工具是多种语言的基础。 这就是为什么您可以轻松使用Groovy,Jython和Scala之类的语言的原因。

Java的弱点

尽管Java具有多种优势,但这种迫在眉睫的编程语言仍然面临着挑战:

  • 不是Web语言–创建Web应用程序所需的层和工具(例如Struts,JPA或JSP)的数量与Java的易用性设计无关。 这些其他框架有其自身的问题,很难在其中使用。
  • 发布频率–随着运行时的每次更改,开发人员必须赶上速度,从而导致内部延迟。 由于Java更新可能会导致暂时的中断和不稳定,因此这对与安全性相关的企业是个麻烦。

Java的下一个发展

尽管Java历史悠久,但它并不是传统的编程语言。 Maven(基于Java的项目的构建工具)的强大使用,颠覆了Java已经过时的理论。 尽管市场上有各种各样的部署工具,但是Apache Maven迄今为止是开发人员用来部署软件应用程序的最大自动化工具之一。

鉴于Oracle对Java的长期承诺,不难看出为什么Java在未来的几年中将始终是编程语言的一部分,并将继续作为首选的编程语言。 2017年将发布第八个Java版本 -Java EE 8。

尽管有待改进的地方,并且受到.NET等竞争对手编程语言的威胁,但Java仍然存在。 Oracle计划在2017年初发布新版本,其新的支持功能将强烈吸引开发人员。 Java作为编程语言的众多优势意味着Java在数字世界中的使用只会不断巩固。 在过去的二十多年中,一种为易于使用而固有设计的语言已证明自己具有功能性和安全性。 欣赏技术变革的开发人员也可以放心,Java的久经考验的语言将很可能始终在其工具集中占有重要地位。

通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用!

翻译自: https://www.javacodegeeks.com/2017/03/history-future-java-programming-language.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fmdb和mysql的区别_FMDB

什么是数据库数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,我们可以很方便的对数据库中的数据进行增、删、改、查操作数据库类型数据库可以分为2大种类关系型数据库(主流)关系型数据库(主流)对象型数据库常用关系型数据库PC端:Oracle、MySQL、SQL S…

RabbiqMQ快速入门

RabbitMQ 官网地址: https://www.rabbitmq.com/ 一个遵循AMQP协议,开源面向消息的中间件,支持多种编程语言。 Rabbitmq 能做什么? 逻辑解耦,异步的消息任务消息持久化,重启不影响削峰,大规模的消息处理主要的特点 可靠性&#xf…

Java命令行界面(第13部分):JArgs

JArgs 1.0的区别在于,这是我的第13篇文章的主题,该文章是关于Java命令行参数解析的。 JArgs是一个开放源代码( BSD许可证 )库,主要由Steve Purcell和Ewan Mellor等 不同的贡献者支持。 事实证明,这在第一次…

pthread vs openMP之我见

前两天看了些并行计算的文章,了解了一些并行计算的方法和原理。然后发现多线程实现里面还有个openMP,这个以前从来没见过(火星了),之前只是知道pthread线程库和微软也实现了一套线程。又看了看openMP的一些教程才知道它…

线程池默认多少个线程_我需要多少个线程?

线程池默认多少个线程这取决于您的应用程序。 但是,对于那些希望对如何从生产站点购买的所有昂贵内核中挤出大量资金的人,请多多包涵,我将阐明围绕多线程 Java应用程序的奥秘。 内容针对最典型的Java EE应用程序进行了“优化”,该…

mysql error writing_MySQL:Error writing file (Errcode: 28)解决方法

问题描述:在执行创建表语句时提示:mysql> CREATE TABLE cash_request (id int(11) NOT NULL auto_increment,dev_id int(11) NOT NULL,bank_account_info varchar(255) NOT NULL,money int(11) NOT NULL,status tinyint(1) NOT NULL default 1,is_fan…

[暑假集训Day4T3]曲线

三分模板。 三分法求单峰函数最优值,之后每次取所有二次函数最优值即可 #pragma GCC optimize(3,"Ofast","inline") #include<iostream> #include<cstdio> #define N 100005 #define eps 1e-9 using namespace std; int read() {int x0,f1;cha…

模拟Spring Security上下文进行单元测试

今天&#xff0c;在为一种Java方法编写单元测试用例时&#xff0c;如下所示&#xff1a; public ApplicationUser getApplicationUser() {ApplicationUser applicationUser (ApplicationUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();return…

mysql semi-synchronous_MySQL Semisynchronous Replication介绍

前言MySQL 5.5版本之前默认的复制是异步(Asynchronous )模式的, MySQL 5.5 以plugins的方式提供了Semisynchronous Replication 模式。在介绍 semi sync 之前,我们先了解&#xff1a;半同步 Asynchronous 和 同步 Synchronous 。异步复制模式主库将已经提交的事务event 写入bin…

Jquery屏蔽回车键

1 $(function(){2 3 $(“#tagForm input”).keypress(4 5 function(event){6 7 if(event.keyCode 13){8 9 returnfalse;10 11 }12 13 });14 15 })转载于:https://www.cnblogs.com/pfs1314/archive/2011/04/19/2020706.html

滑坡泥石流的防御措施_滑坡泥石流防御

什么是滑坡、泥石流?滑坡是指山坡在河流冲刷、降雨、地震、人工切坡等因素影响下&#xff0c;土层或岩层整体或分散地顺斜坡向下滑动的现象。滑坡也叫地滑&#xff0c;群众中还有“走山”、“垮山”或“山剥皮”等俗称。泥石流是指在降水、溃坝或冰雪融化形成的地面流水作用下…

Event Delegate(代理)异常:该委托必须有一个目标 解决方法

正文待叙转载于:https://www.cnblogs.com/kodong/archive/2013/04/19/3031212.html

自定义注解 实现自定义消息_实现自定义的未来

自定义注解 实现自定义消息上一次我们学习了java.util.concurrent.Future<T>背后的原理 。 我们还发现&#xff0c; Future<T>通常由库或框架返回。 但是&#xff0c;没有什么可以阻止我们在有意义的情况下自行实现所有功能。 它不是特别复杂&#xff0c;可以显着改…

菜单 java_java 菜单

继承体系MenuBar,Menu,MenuItem之间的关系&#xff1a;先创建菜单条&#xff0c;再创建菜单&#xff0c;每一个菜单中建立菜单项。也可以菜单添加到菜单中&#xff0c;作为子菜单。通过setMenuBar()方法&#xff0c;将菜单添加到Frame中。package june610;import java.awt.File…

Jsp、Servlet

1 forward、redirect forward 转发是服务器行为&#xff0c;浏览器根本不知道服务器发送的内容是从哪儿来&#xff0c;所以它的地址栏中还是原来的地址。 redirect 重定向是客户端行为。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址&#xff0c;一…

Java Finalizer和Java文件输入/输出流

在与主题直接合作或花时间学习它们之后&#xff0c;我经常会发现自己在网上注意到更多主题。 最近的Stephen Connolly &#xff08; CloudBees &#xff09;发表FileInputStream / FileOutputStream被认为有害的消息引起了我的注意&#xff0c;因为我最近在Java的finalizer中遇…

java 运行main_使用maven运行Java Main的三种方法解析

maven使用exec插件运行java main方法&#xff0c;以下是3种不同的操作方式。一、从命令行运行1、运行前先编译代码&#xff0c;exec&#xff1a;java不会自动编译代码&#xff0c;你需要手动执行mvn compile来完成编译。mvn compile2、编译完成后&#xff0c;执行exec运行main方…

CentOS7 修复boot目录

这里为了达到实验目的&#xff0c;首先删除boot目录下所有内容 重启后发现系统进不去了&#xff0c;这正是我们想要的 进入系统救援模式&#xff0c;以重新引导系统 进入救援模式后&#xff0c;输入以下命令进行修复boot目录 重启后&#xff0c;能正常引导系统了 转载于:https:…

java corepoolsize_理解ThreadPoolExecutor线程池的corePoolSize、maximumPoolSize和poolSize

我们知道&#xff0c;受限于硬件、内存和性能&#xff0c;我们不可能无限制的创建任意数量的线程&#xff0c;因为每一台机器允许的最大线程是一个有界值。也就是说ThreadPoolExecutor管理的线程数量是有界的。线程池就是用这些有限个数的线程&#xff0c;去执行提交的任务。然…

开式蓄冷罐与闭式蓄冷罐_一罐来统治所有人

开式蓄冷罐与闭式蓄冷罐跳下内存通道 早在1998年&#xff0c;当我是一名C / C 开发人员时&#xff0c;尝试使用Java时&#xff0c;有关该语言的一些内容对我来说就显得有些恼火了。 我记得很担心这些 为什么没有合适的编辑器呢&#xff1f; C / C 有很多。 我为Java拥有的只是…