为什么全栈JavaScript经常被黑,而Java却不会被黑?
author:一佰互联 2019-03-30   click:211

简介:全栈这个短命的时髦词应该有点过时了(2014年底TechCrunch上已经被人唱衰了:http://techcrunch.com/2014/11/08/the-rise-and-fall-of-the-full-stack-developer/ )吧,虽然直到今天也没有太准确的定义,以至于悲剧 ...

为什么全栈JavaScript经常被黑,而Java却不会被黑?


全栈这个短命的时髦词应该有点过时了(2014年底TechCrunch上已经被人唱衰了:http://techcrunch.com/2014/11/08/the-rise-and-fall-of-the-full-stack-developer/ )吧,虽然直到今天也没有太准确的定义,以至于悲剧地Wikipedia上连词条都没有。

其实Web开发历史上大多都是全栈的,想想最早的Perl,然后PHP、ASP、JSP,http://ASP.NET、Java Web啥的。

唯一想说的是,全栈程序员其实应该包括一定界面设计能力的。2008年提出full stack Web developer这一说法的文章https://web.archive.org/web/20140802133433/http://forge38.com/blog/2008/06/full-stack-web-developers/ 里,其实强调的正是设计能力。为方便不愿意翻墙的同学,我摘抄一些段落吧:

Over the past few months, I have really started to admire what I call “Full Stack Web Developers”. A full stack web developer is someone that does design, markup, styling, behavior, and programming.

第二句说的就是既要设计,也要会HTML、CSS、JavaScript。设计是放在前面的。

然后举了GitHub创始人之一Tom Preston-Werner等为例,GitHub的设计最初全都是Tom同学做的,人家是RoR高手,还会搞Erlang。

I think I have finally decided that my next professional goal is to learn the last thing to becoming a full stack web developer,design.

不过想想历史上还有一种title叫站长,可以自己一个人搞定一个不小的网站的方方面面,全栈又算什么呢。


为什么全栈JavaScript经常被黑,而Java却不会被黑?


前端是艺术活,后端是技术活。

Java学的好的人,学JavaScript没有任何难度;而传统的前端技能主要还是在静态网页,即HTML+CSS上,JS技能往往限于使用jQuery操作dom。这和目前模块化的JS开发完全不是一码事。前端自称全栈被黑,往往是因为以为会用jQuery操作dom就是精通JavaScript了。而后端自称全栈被黑,往往是因为以为会套用一个bootstrap模板就是精通页面设计了。


为什么全栈JavaScript经常被黑,而Java却不会被黑?


尤其是用Js来写后端,就是自找麻烦。本质就是静态类型和动态类型之争了。

1、类型约束、重构

我写Java的时候,各种风骚,反正有类型给我hold着一些明显错误。重构的时候各种风骚,反正有IntelliJ帮我hold着。做框架做接口的时候各种风骚,反正可以用强类型约束确保不会出现类型错误。Js?每次换个名字都要小心翼翼。类型?这是神马?你硬要说Prototype,也勉强算半个类型,但约束就别跟我谈了。

2、IDE支持

IntelliJ正版旗舰版用户路过。提示得真准啊!Js?跟String.startswith()没多大区别。

3、语言特性

这方面Java做的的确不好,历史包袱重,但依然轮不到Js来喷……尤其是Java8之后,对比以前又了非常大的改进。Java9,还强化了类型推导,如果这一步做完了,那么编写体验又上了一个等级。强静态类型约束+“范型”(加了引号,阉割版的范型,我懂……)+反射+Annotation,分分钟抛离Js几条街。Js?呵呵……

4、Typescript

如果你还怀疑动静态类型之争的,请看看Typescript……无论是否明显写出来,类型都是客观存在的。静态类型稳赢无误。不信?看看为什么会出了Typescript。就连Python3,都添加了类型标注,虽然只是给IDE看的,对运行时完全无影响。

最能反映一个语言工程能力的,觉得有几个方面的实现可以作为衡量的参考:

1、通讯协议。尤其是对HTTP协议的实现。

2、通讯性能。Node的异步大行其道,但这方面Java也没有缺陷。

3、持久化框架。SpringData是设计上的典范。

在后端领域,Js能做的事情,Java没什么不能做,分分钟做得更好。但反过来,Java能做的事情,Js就不一定能做且做的比Java好。黑Java显然需要比黑Js更深厚的功力。


为什么全栈JavaScript经常被黑,而Java却不会被黑?


为什么全栈JavaScript经常被黑,而Java却不会被黑?


为什么全栈JavaScript经常被黑,而Java却不会被黑?


为什么全栈JavaScript经常被黑,而Java却不会被黑?


为什么全栈JavaScript经常被黑,而Java却不会被黑?


为什么全栈JavaScript经常被黑,而Java却不会被黑?


本文仅代表作者个人观点,不代表巅云官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱2522407257@qq.com。更多相关资讯,请到巅云www.yinxi.net学习互联网营销技术请到巅云建站www.yx10011.com。