实训日志(一)

嗯,今天是实训的第三天,目前看来和之前预想的区别很大。

之前吐槽过这里的网以及网速:宿舍完全没网,上课的地方网速较差。这样一折腾让我突然发现自己网瘾很大,不过私以为这没什么问题,网络完全可以成为启迪人们心智的“卡拉”,继而让我们整个物种升华成为一个高度发达的……

言归正传,这两天在学习Spring framework,让人有种耳目一新的感觉,初来乍到的我不禁感叹道Java代码竟然也可以如此优雅。

这样一感叹就暴露了我有多菜,转念一想什么语言不能优雅。优雅是缜密思考过后精心设计的智慧结晶,和载体好像并没有多大关系。

RESTful

使用Spring框架现阶段主要是为了构建Web应用,跟着官网的教程走了一遍下来,顺便也温习了RESTful架构的好处,总结下来有如下几点:

  • 前后端解耦,由于这种架构是面向资源的,所以格式化的文本(多数情况是JSON?)而不是整个HTML页面作为Response,使得前后端可以完全分离。
  • 表现清晰,RESTful充分利用了HTTP协议的特性,使用URI请求资源而不是一长串由&分开的QueryString,体现了HTTP(超文本传输协议)的设计思想,而不仅仅是把它当作底层传输协议,而上层瞎搞。严格定义了对资源的CRUD操作,并利用HTTP verb实现。

我也是才从古代Web开发思想中穿越过来不久,理解的大概还不很透彻,如有误区,请不吝赐教!

Spring作为一个Web框架

从大二 Java Web 课程大作业到现在为止正好一年的时间,已经接触过几个Web开发技术了,我还能想起来当时第一次把应用部署到服务器上从手机访问并成功那时候激动的心情 :) 用有好奇心,追随着好奇心开拓未知的领域,这的确是一件美好的事情。

从Java的JSP到Python的Django再到Flask最终回到Java,我遇见了Spring`。

JSP是一个真正的古代技术,用起来真是太繁琐了,尤其是在开发后期为了某项功能而改来改去的时候,整个Servlet就会变成一个巨大的冗长的恶魔,而JavaBean遇到有关数据库连接并且要求分页的时候,想要做到优雅简直就是痴人说梦,而本意是为了体现高可复用性的JSP页面会因为各种<%if(...)%>语句而变得面目全非,以至于我能够写出让自己怀疑人生的代码。我应该还会写一篇专门反省自己犯下这些滔天罪过的文章,话说回来,我甚至不知道怎么用JSP写RESTful风格的Web服务

事情到了Python这里变得清晰明了了起来,不论是Django的能力强大还是Flask的简明清晰,总之区别于最基础的开创道路的技术,有关框架还是显得要简明许多。如果把开发者分个级,第一层是技术的开创者,最后一层是应用程序的使用者(就算是完全拿来主义的开发者了),我认为框架(framework)的开发者处于第二层的位置。他们将某项常用技术的开发流程加以总结,从中抽取出最常用、最基础、最精华的部分编写成可复用的构件,就成为了一个优秀的框架。正因为如此,优秀的框架也都是从真正的应用项目上剥离出来的,Django如此,Spring也是这样。

但归根结底,我觉得SpringFlask更相似一点,他们都十分轻盈,几乎不会给人什么限制。也许Flask的开发者从Spring这里汲取了一些灵感也说不定。

有趣的地方——有关符号@

在学习的过程中我注意到Spring的控制器路由是由Java的语法特性”annotation“实现的,对于这个特性我有待进一步学习,巧的是Flask中也是使用了样的形式,只不过在Python里@乘坐装饰器,一个用来包装函数用的语法糖,浏览过一些资料,这个特性好像确实是python借鉴Java但功能更复杂的一个语法特性。

因此,本就对Flask很欣赏的我看到这一点的时候不禁对Spring好感度大增。

总结

总而言之,我的水平目前还很不到家,所以也没有提及Spring的一些核心特性诸如Ioc、DI等,但它让我意识到Java这个看似垂垂老矣的语言为什么仍然经久不衰,同时也让我对Java好感度大增。

期待着能够学习更多内容,真是Exciting。

就用一个经典的日志结语:“今天真是有意义的的一天。“