caterpillar 積分 1 編輯於

若可以屏壁 Java EE,就算只是 Servlet API,基本上有很多人會很開心(也許他們並不清楚為什麼開心),雖然 Web Flux 目的並不在為了取代 Servlet(這野心也太小)。

或許多數人也舉不出 JSP/JSF 的問題在哪,大概只是純 Server Page 越來越不重要的投射居多。

IngramChen 積分 0 編輯於

時代已經在前進,除了 servlet 技術外還有別的選擇,像是 spring web flux

web flux 因為沒有依賴 servlet 所以只能和 Freemarker/Thymeleaf 整合。所以跳過 jsp/jsf ,改用這兩個以後切換時會比較有利吧。

是說純 server page 也越來越不重要就是

natsu 積分 0

對JSF來說,JSP被認為是不建議使用(deprecated)的呈現技術。

可是如果要改用 JSF,原本 JSP 的程式可能都要砍掉重練 ...

natsu 積分 0 編輯於

即使事隔多年還是會遇到中文亂碼的問題 ...

其實主要還是 http header content-type 中的 charset 要設正確,client 端與 server 端統一都用 UTF-8 的話就不會有亂碼問題 ...

Spring Framework 的 CharacterEncodingFilter 也不見得一定要用1

caterpillar 積分 1

因為還沒完稿,大概要到五月才會上市。

natsu 積分 0

倒是最近把《Servlet & JSP 教學手冊》改版並更名為《Servlet & JSP 技術手冊》

剛剛 google 了一下... 看來這本書還沒上市...

把書裏一路用 Servlet/JSP 發展起來的應用程式範例,重構到可以用上 Spring MVC 的最小集合,然後注入元件、逐漸去除 Servlet API、抽出表單物件、改用 Thymeleaf、使用 JdbcTemplate、簡化 Java Mail 等…

Servlet/JSP + 重構 + Spring,這本書未免也太超值!

能夠漸進式移植的話,目標比較明確,這樣瞭解 Spring 比較有意義,我個人是覺得,這些功能拆開來說明的話會很空虛。

這需要 programmer 有時間去了解這個過程... 以及上面老闆的支持...

caterpillar 積分 0 編輯於

作者可以做到 篩選 這件事,是因為 Spring 有幾項優點 …

是啊!文件裏有寫…

框架應該要有個最小集合,而這個最小集合,最好可以基於開發者既有的技術背景,在略為重構(原型)應用程式,以使用此最小集合後,就能使應用程式運行起來,之後隨著對框架認識的越多,在判定框架中的特定功能是否適用,之後,再逐步重構應用程式能使用該功能。

caterpillar 積分 2 編輯於

目前沒有,倒是最近把《Servlet & JSP 教學手冊》改版並更名為《Servlet & JSP 技術手冊》,最後用上了 Spring 5,基本上就是我這篇文章的過程實現,把書裏一路用 Servlet/JSP 發展起來的應用程式範例,重構到可以用上 Spring MVC 的最小集合,然後注入元件、逐漸去除 Servlet API、抽出表單物件、改用 Thymeleaf、使用 JdbcTemplate、簡化 Java Mail 等…

能夠漸進式移植的話,目標比較明確,這樣瞭解 Spring 比較有意義,我個人是覺得,這些功能拆開來說明的話會很空虛。

姑且當成 Spring 技術手冊借殼還魂吧!…XD

natsu 積分 0 編輯於

API 成熟穩定。即使現在已經 spring 4/5 了,還是可以用 2.x 版的方法去改寫,2.x 版到 5.0 中間隔了十年啊!

API 定得好真的蠻重要的,才不用一直改寫...

原來 Spring 已經發展十年了啊... 真的很厲害

IngramChen 積分 3 編輯於

作者可以做到 篩選 這件事,是因為 Spring 有幾項優點

  • API 成熟穩定。即使現在已經 spring 4/5 了,還是可以用 2.x 版的方法去改寫,2.x 版到 5.0 中間隔了十年啊!

  • 可以漸進式的移植。原本 servlet 的寫法,改成 spring controller 的皮後,大部份的舊程式還能動,你不用一次全部改完,可以分好幾個批次做。

  • spring 是個高度模組化的 framework,你可以只用他的 mvc 就好了,其他都可以放著先不管。也因為如此,你才有機會 篩選,只導入一部份你想要的功能

不是什麼 framework 都能這樣玩,例如 Angular 就沒有上述的任何優點。想導入嗎?那就全部重寫吧

natsu 積分 0 編輯於

在工作也暫時用不上的情況下,被我暫時放生的框架之一是Spring,在Spring 2.0 之後就不常接觸。過了多年,現在5.0都出了,雖然大致知道主打的特點是什麼,但並未去玩弄過細節。

我也是在 Spring 2.0 之後就不常接觸了,直到最近的案子有機會用到 Spring 4.x。

Spring 4.x 可以用 @Controller@Service@Respository 等 annotation 真的蠻方便的,不用 extend 或 implement 就可以讓類別擔任各自的角色。

不過就是有些細節不太了解,像是 @Controller 的 method 若使用 ModelAndView 取值會是 null,但用 @ModelAttribute 卻取得到值。

另外,不知 Caterpillar 是否有出 Spring 5.x 技術手冊的打算? XD

IngramChen 積分 0

應該是用標準的 spring 寫法來實作造成的,沒有特別為這個 benchmark 最佳化

有一次看 changelog ,他們還把比較快的寫法換成標準的寫法...

vendy 積分 0
spring跟版本有關係嗎,用得版本都好舊~ 像vert.x就是用最新的
Spring 4.1.7.RELEASE
Spring Boot 1.2.5.RELEASE
Spring Data JPA 1.7.3.RELEASE
Undertow 1.1.7.Final
IngramChen 積分 0

記得以前幾次前幾名都是 c/c++ 佔據了,現在 java 又回到前幾名,雖然都不是大家常用的就是。

spring 名次好低啊

koji 積分 0

我們有人就是為了這個, dao query 用 kotlin

cchuang0425 積分 0

這真是久等的好消息,可以用 Java 寫 script 了!!!

IngramChen 積分 0

我寫了十年的 test 還沒寫過需要順序的 test case

natsu 積分 0

Test method 預設的執行順序沒有一定,不是照字母順序、也不是照在程式碼中出現的順序,所以可能的話應該要讓每個 test method 都能獨立測試,才不會因為執行順序的關係造成測試結果不如預期。

不過如果想讓 test method 依字母順序執行,JUnit 4.11+ 也是有 @FixMethodOrder(MethodSorters.NAME_ASCENDING) 可用。

haocheng 積分 0

看起來這個 JEP 不會處理 interpolation 部分,理論上應該要有另一個 JEP 來負責才對,不過我沒找到...

IngramChen 積分 1 編輯於

interpolation 是指在 literal 裡摻 expression

"hello $name"
natsu 積分 0

String interpolation 指的是這個1嗎?

雖然不太喜歡用 %s%d 之類的 (比較喜歡 EL、SLF4J 的作法),但是應該和 String literals 沒有衝突吧?

natsu 積分 0

對啊,討論了很久終於...

如果有這個功能,以後字串的排版就可以更靈活了~

突然想到 Annotation 是否也需要 String Literals? (e.g. @NamedQuery)

nanashi07 積分 0

總比都不改的好,至於 android 會慢慢往 kotlin 轉吧。

IngramChen 積分 0 編輯於

忽然想到這是 java 最後一次加上 string interpolation 的機會了

因為不管你挑什麼符號做為 interpolation 的 prefix, 現有的 java 程式一定都有人用過了, 25年啊

raw string literal 這功能上線的當下, 如果沒有先做完 interpolation, 之後想再加就會 break change...

做不完的話好歹也先留個 keyword 給之後用 (比方說用 $ 字號一定要 escape), 就跟 _ 底線先保留給未來的 lambda 用一樣