小弟08年本科畢業,過去11年的時間,做過嵌入式開發(單片機,ARM+Linux),做過手機JVM,做過Mac OS開發,做過模式識別算法開發,做過iOS開發,做過很短一段時間的區塊鏈開發,現在終于轉戰到Java后臺了。打算寫下一些轉戰Java后臺的流水賬,每一段時間記錄一下,轉換平臺過程中遇到的問題,和學習到的新東西。
過去5年時間,都一直在做iOS,就是那種1年經驗用了5年的老司機,今年7月份開始想著換個技術方向,豐富一下技術棧,以后轉管理也比較有底氣一點。
話不多說,轉戰Java后臺首先要把Java語法學一下,畢竟搞過蠻多東西,這個學起來倒不難,不過有個很不爽的地方是,Java相對Objective-c語言還是太粗糙了,調用前必須做一下null判斷,否則就是給你個Exception。Objective-C在這里的優勢就很明顯了,畢竟是基于消息的方法調用,如果是nil對象,直接調用,不會有什么反應。所以到處都是null判斷,代碼閱讀起來不是很爽。
有個在Java學習過程中沒有搞懂的東西就是注解(annotation),這個東西看了不少文章,感覺都沒講清楚,先放著,后面有時間了再好好理解一下,畢竟暫時不影響做事。
轉Java后臺是因為公司接手了一個教輔軟件,已經運營3,4年了,代碼量將近10萬行,不過對于我這種新手來說,也是夠喝一壺的了。
項目基于Spring+Mybatis,我理解Spring就跟Cocoa差不多,一套底層框架,Mybatis比較像CoreData那一套封裝。Spring相關的材料還在看,Mybatis的內容相對少一些。簡單來講Mybatis由三個文件組成,先通過MySQL語句在MySQL數據庫中建表,然后通過Mybatis提供的工具導出Entity, mapper, xml三個文件。Entity和CoreData里面的數據模型文件差不多,就是定義存儲的對象的數據結構,一般不對這個文件做修改;mapper是一個接口描述文件,描述了訪問數據庫表的參數,這里會有一些默認的方法,比如insert,insertSelective, selectByPrimaryKey等方法,在這里要根據需求加入開發人員定制的方法進行組合查找;xml文件是MyBatis語法用xml格式寫成的MySQL語句,這個語法還蠻多的,我目前只會一些基本的。
服務器之間的通信使用騰訊的Tars框架,這個是跟iOS開發很不一樣的地方,后臺開發不像iOS這種單個app,單進程應用,服務器開發涉及到多個進程之間通信,通常不叫多個進程之間通信,叫多個服務之間通信,你要通信的那個服務可能在同一臺服務器上,可能在另一臺服務器上,所以要一個框架來負責維護這些服務,讓彼此能很容易的知道對方在哪里,以及維護服務上下線這些。Tars還蠻好用的,不過我們的這套系統用的很老的1.0版本。
先寫這么多,最近做了一段時間,還有蠻多東西可以寫,后面再一點點寫。