为什么我喜欢Java的细节

他们说,Java太冗长了。 您可以找到Hello World程序的比较结果,这些程序在ruby中使用2行,在Java中使用10行,要读取文件,您需要使用Java 20行和php中1行。

尽管示例经常被夸大(例如,计算导入次数),但确实Java程序需要更多的代码行。 但这根本不是一件坏事。

相反,这是我真正喜欢的东西。 实际上,这与语言的冗长无关—除了匿名类而不是闭包之外,没有什么其他语言太冗长。 它是关于核心库的。 所以–我喜欢以冗长的方式编写核心库的方式。 两个例子:

  • 拿java.io。 包。 读取和写入文件,流等。这有点难掌握,一开始,您需要复制粘贴很长的代码片段以仅读取文件。 但这迫使您理解流和读者的抽象。 其他语言则很简单: var contents = readFile("path")很酷,但是您永远不必了解I / O管理的工作原理。 如果读取失败会怎样? 对文件进行部分读取就足够了吗? 您可以讨价还价吗? 您应该关闭资源还是将其自动关闭? 您无需为打招呼世界程序回答这些问题,但很快就需要了解它们。 不太冗长的语言对您隐藏了它们,并推迟了这种“抽象启示”。
  • Servlet API。 乍一看,它看起来有些毛茸茸的类和接口。 但是很快,您就会意识到整个过程是如何工作的–不仅在Java中,而且在http请求的一般生命周期中。 因为您需要一个Servlet对象,请求和响应对象以及要写入的输出流,所以您了解了整个请求-响应周期。 我这里有一个个人例子。 我已经在学校写PHP一年了。 然后一个月的Java和servlet使我完全明白了整个过程。 PHP非常易于使用– $_GET['foo'], session_start()和之间的一堆HTML。 因此,我不必理会底层的机制。 Java迫使我这么做。

您可能会说–很好,它迫使您学习这些重要的概念和抽象,但是它也应该为您提供一种轻松完成事情的方法。 但是,如果核心库本身具有这些选项,则所有教程都将显示这些选项,并且较低级的API将被忽略。

因此,解决方案是–第三方图书馆。 Apache和Google为您提供了这些。 有了番石榴和阿帕奇共享区,您将获得所有这些一线。 Joiner.on(",").join(array) FileUtils.readLines(..)Joiner.on(",").join(array)等。但是,您不是从这些库开始的,而是学习了如何在较低的层次上进行工作–仍然需要知道。

参考: 为什么我们喜欢 JCG合作伙伴 Bozhidar Bozhanov的 Java Verbosity,位于Bozho的技术博客上

相关文章 :

  • 讨厌Java吗? 您正在打错仗。
  • 选择一种新的编程语言来学习
  • 编写不烂的代码
  • 如果我有更多的时间,我会写更少的代码

翻译自: https://www.javacodegeeks.com/2012/01/why-i-like-verbosity-of-java.html

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

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

相关文章

dll 源码_【技术分享】 | 一个JAVA内存马的源码分析

前言偶然接触到了这样一个JAVA内存马,其作者也是冰蝎的作者,项目地址:https://github.com/rebeyond/memShell正好最近在接触JAVA,借此机会学习下大佬的代码,对自己的编程思路也有了一定的提升。当然笔者只是一个脚本小…

ThunderSearch(闪电搜索器)_网络空间搜索引擎工具_信息收集

文章目录 ThunderSearch简介1 项目地址2 使用方式2.1 配置文件config.json说明2.2 构建和运行 3 使用式例 ThunderSearch简介 ThunderSearch(闪电搜索器)是一款使用多个(【支持Fofa、Shodan、Hunter、Zoomeye、360Quake网络空间搜索引擎】网络空间搜索引…

字符串匹配方法

介绍两种字符串匹配方法1.暴力匹配母串用s表示,长度为m子串用p表示,长度为n时间复杂度为:(m-n1)n算法:从s串的第一个字符开始匹配,若匹配,继续根据p向后匹配,若后续的不匹配,s右移重新匹配p 2.K…

区分几进制的标志

自己总是记不住进制的开头标记,就写下来忘了就看看 1.二进制:Binary,数字以0b 、0B开头 2.八进制:octal number system,数字自然以0打头 3.十六进制:hexadecimal,以0x、0X开头

每个人都知道MVC…

从一个最近的博客中,您可能已经了解到我最近一直在进行一些采访,因为他们是针对Web应用程序开发人员的,所以我问的一个问题是“您能解释一下MVC模式是什么吗?”,值得称赞的是,每个候选人知道答案。 对于不认…

php无限分类

无限循环 1.需要套2个foreach 2.2个foreach结构一样 纯代码获取数据 public function CycleData($parent_id0){$where[parent_id] $parent_id;$res $this->m->where($where)->field(id,name)->select();foreach($res as $k>$v){$result[$v[id]][id] $v[id];$r…

动态网页数据的采集方案

我在上一篇文章中介绍了使用ScrapySharp快速从网页中采集数据,这种方式是通过直接发送的Http请求来获取的原始页面信息,对于静态网页非常有效,但还有许多网站中的页面内容并非全部存放在原始的页面中,很多内容是通过javascript来动…

r语言ggplot2 多线图绘制图例_plotnine: Python版的ggplot2作图库

腾讯课堂 | Python网络爬虫与文本数据分析同样的基本作图任务,plotnine比matplotlib和seaborn代码量少,更美观。所以我又重新发一遍,大家可以先收藏起来,后面总有用到的时候~R语言的ggplot2绘图能力超强,python虽有mat…

单元和集成测试的代码覆盖率

我最近在一个宠物项目中着手构建自动化的UI(集成)测试以及普通的单元测试。 我想将所有这些集成到我的Maven构建中,并提供代码覆盖率报告,以便我可以了解测试覆盖率不足的区域。 我不仅发布了项目的源代码,还整理了一个…

javascript事件与event对象的属性

javascript事件列表解说事件浏览器支持解说一般事件onclickIE3、N2鼠标点击时触发此事件ondblclickIE4、N4鼠标双击时触发此事件onmousedownIE4、N4按下鼠标时触发此事件onmouseupIE4、N4鼠标按下后松开鼠标时触发此事件onmouseoverIE3、N2当鼠标移动到某对象范围的上方时触发此…

感想

读完三篇文章看到了前辈们的努力与坚持和对各自的学科的热爱,以及各位前辈的奋斗的艰苦环境,我与那些前辈相比也许还达不到前辈们的那种级别,但是我的学习的条件却比那些前辈们好的多,看完前辈们的奋斗史,以及前辈们的…

python学生分布_Python数据分析实战之分布分析

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:严小样儿 分布分析法,一般是根据分析目的,将数据进行分组,研究各组别分布规律的一种分析方法。…

使用Spring Security 3.1保护RESTful Web服务,第3部分

1.概述 本教程显示了如何使用Spring和基于Java的Spring Security 3.1来保护REST服务 。 本文将重点介绍如何使用“登录和Cookie”方法专门针对REST API设置安全配置。 2. Spring Security的体系结构完全基于Servlet过滤器,因此,在HTTP请求处理方面&…

一次完整的HTTP请求所经历的7个步骤

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1、建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共…

jQuery基础--样式篇(3)

1.jQuiery对象与DOM对象   对于刚刚接触jQuery的初学者,我们要清楚认识一点:jQuery对象与DOM对象是不一样的。可能一时半会分不清楚哪些是jQuery对象,哪些是DOM对象,下面重点介绍一下jQuery对象,以及两者相互间的转换…

hls fifo_HLS优化方法DATAFLOW你用了吗

上期内容:异步跨时钟域电路该怎么约束DATAFLOW作为HLS的一种优化方法,对于改善吞吐率(Throughput)、降低延迟(Latency)非常有效。DATAFLOW的作用对象DATAFLOW可以作用于函数,也可以作用于for循环。如下图所示(图片来源Figure62, Figure 63, u…

Java 8虚拟扩展方法

我一直关注Java 8 Lambda表达式项目的发展已经有一段时间了,我对其当前的进展状态感到非常兴奋。 我发现的最新“易于理解”的演示文稿是这样的: http://blogs.oracle.com/briangoetz/resource/devoxx-lang-lib-vm-co-evol.pdf 现在,作为一名…

python爬虫 库_七款必备的Python爬虫库,你知道几个?

很多你需要的信息数据都是在网站内,虽然有些网站的数据会以整洁、结构化的形式呈现,但大部分网站却无法做到这样。因此,当你想要获得一些数据的时候,你需要一些爬虫工具帮助抓取,然后再对其进行分析。今天,…

62个Android Studio小技巧合集

转载: 原文链接:http://laobie.github.io/android/2016/02/14/android-studio-tips.html转载于:https://www.cnblogs.com/kesteler/p/5618490.html

在Hibernate,EhCache,Quartz,DBCP和Spring中启用JMX

继续使用JMX的过程(请参阅: 人类JMX ),我们将学习如何在一些流行的框架中启用JMX支持(通常是统计和监视功能)。 这些信息大部分都可以在项目的主页上找到,但是我决定在收集这些信息的同时&#…