关于Java的常见误解

Java是世界上使用最广泛的语言(需要引用),每个人对此都有自己的见解。 由于它是主流,所以通常会嘲笑它,有时是正确的,但有时批评只是不切合实际。 我将尝试解释我最喜欢的5个关于Java的误解。

  1. Java速度很慢 – Java 1.0可能确实如此,并且最初听起来似乎合乎逻辑,因为Java不是编译成二进制,而是编译成字节码,而字节码又被解释了。 但是,现代版本的JVM进行了非常非常优化(JVM优化不仅是一篇文章,而且是一整本书的主题),而且不再是遥不可及的了。 如此处所述 , 在某些情况下 ,Java甚至可以与C ++媲美。 如果您是Ruby或PHP开发人员,那么开个关于Java变慢的笑话当然不是一个好主意。
  2. Java太冗长 -在这里,我们需要将语言从SDK和其他库中分离出来。
    • JDK(例如java.io)中有一些冗长的细节,这是:1.用事实上的标准库(例如guava)轻松克服了2. 一件好事
    • 至于语言的冗长性,唯一合理的一点是匿名类。 在Java 8中,这些功能不再是问题。 Getters和setters, Foo foo = new Foo()而不是使用val (可能是)样板,但它并不冗长-不会在代码上增加概念上的分量。 不需要花费更多的时间来编写,阅读或理解。
    • 其他库–看到像AbstractCommonAsyncFacadeFactoryManagerImpl这样的类确实很吓人。 但这与Java无关。 可以说,有时这些长名称是有意义的,也可以说它们是如此复杂,因为底层的抽象不必要地复杂,但是无论哪种方式,这都是每个库做出的设计决定,而语言或语言都不是什么。 SDK会强制执行。 看到过度设计的东西是很常见的,但是Java绝不会将您推向这个方向-可以使用任何语言以简单的方式完成东西。 您肯定可以在Ruby中使用AbstractCommonAsyncFacadeFactoryManagerImpl ,只是没有一个愚蠢的建筑师认为这是个好主意,并且使用Ruby。 如果“大型,认真,沉重”的公司都在使用Ruby,我敢打赌我们会看到相同的情况。
  3. 企业Java框架是过时的软件 –肯定在2002年使用EJB 2时(或者“已经”,我还太年轻,无法记住)确实如此。 而且,您仍然确实不需要一些过度设计和过时的应用程序服务器。 人们使用它们的事实是他们自己的问题。 您可以使用Spring,Guice甚至CDI之类的框架来拥有一个完美,易读,易于配置和部署的Web应用程序。 使用诸如Spring-MVC,Play,Wicket甚至最新的JSF之类的Web框架。 甚至没有任何框架,如果您不想重复使用通过真实世界使用的框架。 您可以拥有一个使用消息队列,NoSQL和SQL数据库,Amazon S3文件存储等的应用程序,而不会造成任何意外的复杂性。 的确,人们仍然喜欢吃惊的东西,并在不需要的地方添加几层,但是框架为您提供这种功能的事实并不意味着他们会让您做到这一点。 例如, 这是一个应用程序 ,可对政府文档进行爬网,为其编制索引,并提供用于搜索和订阅的UI。 听起来有点简单,确实如此。 它是用Scala(非常用Java的方式)编写的,但仅使用Java框架-spring,spring-mvc,lucene,jackson,guava。 我想您可以开始快速维护,因为它很简单。
  4. 您不能使用Java快速原型设计 -这与上一点有关-假定使用Java的速度很慢,这就是为什么如果您是初创公司或周末/黑客松项目,则应使用Ruby (使用Rails),Python,Node JS或其他任何可以让您快速原型化,保存和刷新,轻松进行迭代的东西。 好吧,那根本不是真的,而且我甚至都不知道它来自哪里。 可能是因为流程繁重的大公司使用Java,因此制作Java应用程序会花费更多时间。 而且“保存并刷新”对于初学者来说可能令人望而生畏,但是使用Java(针对Web)编程了一段时间的任何人都必须知道一种自动化方法(否则他是n00b,对吗?)。 我已经总结了可能的方法 ,并且大多数方法都可以。 这里的另一个示例(也可以用作上述要点的示例)–我做了这个项目,用于验证周末+ 1天之内网站的安全密码存储,以解决晚上的问题。 包括安全性研究。 Spring-MVC,JSP模板,MongoDB。 再次-快速简便。
  5. 如果没有IDE ,您将无法在Java中执行任何操作 -当然可以,您可以使用notepad ++,vim和emacs。 您将只缺少重构,保存时编译,调用层次结构。 就像使用PHP或Python或javascript进行编程一样。 关于IDE与编辑器的争论很长,但是您可以在没有IDE的情况下使用Java。 这样做没有任何意义,因为从IDE获得的收益远远超过从文本编辑器+命令行工具获得的收益。

您可能会争辩说,因为我有丰富的经验,所以我能够快速编写精美而简单的Java应用程序,我确切地知道要使用(不使用)哪些工具,而且我是一些常识性的稀有开发人员。 虽然我会为此受宠若惊,但我与优秀的Ruby开发人员或Python专家没有什么不同。 只是Java太普及了,以至于没有好的开发人员和工具。
如果有那么多人使用其他语言,那么可能会生成相同数量的糟糕代码。 (即使使用更少,PHP也已经领先)。 我是最后一个不嘲笑Java的人,它当然不是灵丹妙药,但是如果人们因传闻证据或以前的不良经历而对误解的理解减少了,我会更高兴la“从我之前的公司开始,我就讨厌Java,因为该项目非常肿”。 不仅是因为我不喜欢别人有偏见,而且因为您可能会以一种不起作用的语言开始下一个项目,只是因为您听说过“ Java不好”。

翻译自: https://www.javacodegeeks.com/2014/04/common-misconceptions-about-java.html

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

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

相关文章

tomcat中间件的默认端口号_修改tomcat默认端口号8080

修改tomcat端口号端口修改tomcattomcat服务器的默认端口号是80801 只启动一个tomcat的情况当我们不想使用8080端口,需要修改为其他端口时,我们可以:1, 打开tomcat安装目录下的conf目录,找到server.xml文件。找到以下代码connectionTimeout&qu…

我们的爱

对白-什么感觉怎么样?-跟冷风一起-怎么了?-感觉好么?-怎么叫,好不好-时间过的快么?-带他的时候还真不快-呵呵-我想我不用再买月卡了-嘛?-没什么-恩?说-你考虑清楚吧-什么?-我说你俩早上论坛里灌的那么开心呢-.-呵呵-看样子,又要闹革命了-我很冷静-转载于:https://www.cn…

this指向问题

我今天下午本来想做个就是tr鼠标移出之后过三秒把对应的input添加hiddens类 然后我就这样写了 $(.table>tbody>tr).mouseout(function(){var index$(this).index();setTimeout(function(){console.log(index);console.log($(this));$(this).parents(.table).siblings(.c…

shouji android输入法,安卓手机主流输入法对比

什么是合格的输入法?1. 按键布局合理2. 词库丰富且云识别准确3. 文字编辑4. 符号快捷输入5. 翻译功能6. 语音识别转文字对比五款主流输入法:触宝、百度、搜狗、讯飞、QQ均为默认皮肤和设置。1. 按键布局从哪进从哪出,这应该是一个输入法最基本…

DS博客作业06--图

1.本周学习总结 1.思维导图 2.谈谈你对图结构的认识及学习体会。 原本以为树已经够难的了,结果发现觉得太早了。图好难,看不懂。图是由两个集合V和E组成,V指的是顶点的有限集合,E代表两个不同顶点的边的有限集合,图也分…

c 给定字符串中查找_面试 | 查找类算法精析

点击上方蓝字设为星标每周一、三、五上午 8:30 准时推送下面开始今天的学习~前言查找,是使用计算机处理问题时的一个最基本的任务,因此也是算法面试中非常常见的一类问题。很多算法问题的本质,就是要能够高效使用查找。LeetCode 中…

Jiaozi帮忙买的Secret Garden的票拿到了,谢谢Jiaozi

10.7 晚 19:30文化艺术中心大剧院转载于:https://www.cnblogs.com/rexhost/archive/2004/09/28/47608.html

LInux安装MySQL5.7.24详情

安装包下载 MySQL 的官网下载地址:http://www.mysql.com/downloads/ 我安装的是5.7版本 第二步: 选择:TAR (mysql-5.7.24-el7-x86_64.tar) 点击下载 然后点击 No thanks, just start my download. 进行下载。 检查是否安装过mysql [rootmas…

正确设置JUnit测试名称

寻找好名字是手工软件的挑战之一。 您需要随时随地找到它们-类,方法,变量,仅举几例。 但是,什么使名字成为好名字呢? 引用Oncle Bob的话:“三件事:可读性,可读性和可读性&#xff01…

angular学习的一些小笔记(中)之ng-disabled轻松实现按钮是否可点击状态

哇&#xff0c;这个可以轻松实现输入值就按钮可点击&#xff0c;输入框没有值则不可点击的状态呀 看代码 <!doctype html> <html ng-app""> <head><script src"https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.js&q…

html5储存类型特点,避免踩雷!你不得不知的 HTML5 “新”特性

什么是 HTML5HTML的发展历程如下&#xff1a;产生于1990年1997年 HTML4 出现&#xff0c;成为互联网开发的标准2008年&#xff0c;HTML5正式出现&#xff0c;2002年趋于稳定HTML在发展过程中&#xff0c;HTML4.01 版本维持了长达十年的时间&#xff0c;之后 HTML5 标准才出现&a…

How to show out three rows from the same databand On A4?

How to show out three rows from the same databand On A4? QuotePost by DoraHuang Tue Mar 13, 2018 4:13 am Hello, there are few questions to ask,1. How to present a report from one DataBand to show out three info?My questions like the picture:it is A4 pag…

rds基于什么开发_IaaS、PaaS、SaaS、DaaS都是什么?现在怎么样了?终于有人讲明白了...

导读&#xff1a;本文将详细科普云计算的概念、云服务的发展现状&#xff0c;并逐一介绍各种云服务模式&#xff08;IaaS、PaaS、SaaS、DaaS&#xff09;&#xff0c;建议收藏&#xff01;01 云计算的概念云是一种服务&#xff0c;可以像使用水、电、煤那样按需使用、灵活付费&…

30岁前不要在乎的29件事(转载)

30岁前不要在乎的29件事(转载) 作者&#xff1a; 2004-2-13 20:08:22 原始出处&am…

[转]css实现左侧宽度自适应,右侧固定宽度

原文地址:https://segmentfault.com/a/1190000008411418 页面布局中经常用会遇到左侧宽度自适应&#xff0c;右侧固定宽度&#xff0c;或者左侧宽度固定&#xff0c;右侧自适应。总之就是一边固定宽度&#xff0c;一边自适应宽度。 一般固定宽度是导航栏&#xff0c;自适应宽度…

Java 8发布了! — Lambdas教程

为了庆祝几分钟前发布的Java 8的发布&#xff0c;我正在发布Java 8 Lambdas教程的草稿版本。 这是学习Streams API的一种很好的可视化方法&#xff0c;从第一天开始&#xff0c;它将帮助您开始在自己的应用程序中利用lambda。本文计划在下一期Java Magazine发行中发表&#xff…

angular学习的一些小笔记(中)之表单验证

表单验证 我去&#xff0c;我感觉我这个人其实还是一个很傻逼的一个人&#xff0c;老是因为拼错了一个单词或者怎么样就浪费我很长时间&#xff0c;这样真的不行不行&#xff0c;要正确对待这个问题&#xff0c;好了&#xff0c;说正题吧&#xff0c;angular也有表单验证minle…

html 表单优化,用CSS3优化HTML5表单的步奏

今天给大家带来用CSS3来优化HTML5表单的方法&#xff0c;首先我们创建一个表单&#xff0c;格式如下。#redemption {width: 100%;font-family: ColaborateThinRegular;font-weight: 400;}#redemption hgroup {argin-bottom: 20px;}#redemption div {width: 100%;margin-bottom:…

redis 学习(18)-- AOF

redis -- AOF 什么是 AOF 通过日志方式将redis中的写命令进行日志记录&#xff0c;保存在硬盘文件中。 日志记录的实质是将写命令写在硬盘的缓冲区中&#xff0c;再根据相关策略把数据刷新到磁盘中。 当redis服务器启动时候&#xff0c;执行硬盘中的日志文件以恢复redis中的数据…

重启IIS和SqlServer的命令行

在WEB开发中经常需要重启IIS,每次打开IIS来操作很麻烦&#xff0c;所以我干脆就在桌面新增了一个CMD文件&#xff0c;内容如下&#xff1a;&#xff08;SQL Server占的内存不少&#xff09;net stop iisadmin /ynet start w3svc net stop mssqlservernet start mssqlserver每次…