ToyLang 原型想試作的都完成了,包括變數、基本流程、一级函式、lambda expression、類别、繼承、mixin、meta programming 基礎 API 等,以及一些簡單的語法、變數除錯訊息,有興趣可以看看,可以當入門語言實作參考。
改天再來寫點文件,聊 ToyLang 語法以及實現概念。
差別主要在於有沒有可參考的 self instance(無論是 Python 明確的 self 或 Java 隱含的 this)。
像 Python 或 JavaScript 可以指定 self instance 的語言中,區分方法與函式就沒什麼意義,高興怎麼叫就怎麼叫(Java 也可以透過 Reflection 來做)。
就語言實作層面來說,其實都類似,都是變數查找之類的,看是要明確的 self 或隱含地在環境物件之類的東西中找。
Simon Ritter 留言中有重要資訊…XD
The points you make on the LTS releases are all correct. However, you're missing one very big point: the updates will only be available for customers with a commercial support contract from Oracle. Public updates for JDK 11, like those of all other release from JDK 9 onwards will stop after six months when the next version is released. This will have a big impact on deployments of Java where access to security and bug fixes is an issue.
只有簽合約的才拿得到 LTS 的維護更新!
用 ES6 箭號函式(lambda)實現的微語言
不少人看似認為 Flux 是 Servlet Stack 的取代物,然而根本上是兩套不同的模型。
However, working with the reactive stream involves a bit of learning curve and ensuring that no developer ends up calling
block()
. Another deal breaker might be the lack of reactive database drivers. JDBC is inherently blocking and very few other databases like MongoDB, Cassandra support reactive drivers officially at this point.
不是指純寫 Servlet,而是指 Servlet API,掛一層 Jersey/Spring,還是看到不少人搞不出 HttpSession、ServletContext 等的一些對應功能,然後縮回去直接搞 HttpSession、ServletContext … 基本上 Jersey/Spring 這類抽象層都想或有對應的方案,不過有時麻煩,有時藏在某些地方找不到,有時是心智模型還是掛在 Servlet Container,經驗上難以脫離(新生代若完全沒有或不用接觸 Servlet 容器,大概會比較沒這困擾) …
若可以屏壁 Java EE,就算只是 Servlet API,基本上有很多人會很開心(也許他們並不清楚為什麼開心),雖然 Web Flux 目的並不在為了取代 Servlet(這野心也太小)。
或許多數人也舉不出 JSP/JSF 的問題在哪,大概只是純 Server Page 越來越不重要的投射居多。
作者可以做到 篩選 這件事,是因為 Spring 有幾項優點 …
是啊!文件裏有寫…
框架應該要有個最小集合,而這個最小集合,最好可以基於開發者既有的技術背景,在略為重構(原型)應用程式,以使用此最小集合後,就能使應用程式運行起來,之後隨著對框架認識的越多,在判定框架中的特定功能是否適用,之後,再逐步重構應用程式能使用該功能。
目前沒有,倒是最近把《Servlet & JSP 教學手冊》改版並更名為《Servlet & JSP 技術手冊》,最後用上了 Spring 5,基本上就是我這篇文章的過程實現,把書裏一路用 Servlet/JSP 發展起來的應用程式範例,重構到可以用上 Spring MVC 的最小集合,然後注入元件、逐漸去除 Servlet API、抽出表單物件、改用 Thymeleaf、使用 JdbcTemplate、簡化 Java Mail 等…
能夠漸進式移植的話,目標比較明確,這樣瞭解 Spring 比較有意義,我個人是覺得,這些功能拆開來說明的話會很空虛。
姑且當成 Spring 技術手冊借殼還魂吧!…XD
它改寫自〈JavaScript 本質部份1〉。
除了將近十年前寫的東西更新之外,主要是做為一個實驗性的文件,目的是想試試,如果有機會拋棄一些包袱的話,在瀏覽器上寫 ES6、XMLHttpRequest Level 1 等,應該要做什麼樣的思考與設計!可以與〈JavaScript 本質部份〉中對應的文件對照看看,寫法有什麼不同。
有人的會問…瀏覽器的相容性嘞?嗯…都說是實驗性的文件了,〈ECMAScript 本質部份〉也不是用來取代〈JavaScript 本質部份〉文件的,後者還是會擺著,包袱重的話,就還是參考後者!
指定壓縮,去掉 jmod 裏不必要的文件、標頭檔或指令等,還可以更小一些。
docs.oracle.com/javase/9/tools/jlink.htm
之前 Sun 某個 Java 傳教士就曾在某個研討會投影片中靠北過了,反正他的大意就是「你們這些人總是覺得演化 Java 時這好哪好,其實才沒你們想的這麼簡單,我們要考慮的情況可多著嘞」…XD