能夠使用java開(kāi)發(fā)出類似qq的聊天小程序達(dá)到了java學(xué)習(xí)的什么水平?
網(wǎng)友解答: 聊天類應(yīng)用(RTC)是學(xué)習(xí)Java過(guò)程中經(jīng)常做的實(shí)驗(yàn),其實(shí)聊天功能有很多事情可以做,隨著學(xué)習(xí)的不斷深入而逐步豐富聊天程序的功能。在學(xué)習(xí)的早期階段可以使用多線程結(jié)合Socket
聊天類應(yīng)用(RTC)是學(xué)習(xí)Java過(guò)程中經(jīng)常做的實(shí)驗(yàn),其實(shí)聊天功能有很多事情可以做,隨著學(xué)習(xí)的不斷深入而逐步豐富聊天程序的功能。
在學(xué)習(xí)的早期階段可以使用多線程結(jié)合Socket創(chuàng)建一個(gè)基本的聊天應(yīng)用,這個(gè)應(yīng)用的重點(diǎn)在于對(duì)多線程的理解以及對(duì)Socket創(chuàng)建連接過(guò)程的理解。在Java學(xué)習(xí)的初級(jí)階段,多線程是一個(gè)重點(diǎn)內(nèi)容,也是一個(gè)難點(diǎn)。Java多線程的內(nèi)容還是比較多的,尤其在Java1.5版本以及Java1.8版本之后,增加了不少關(guān)于多線程方面的內(nèi)容(我在酷米上寫了關(guān)于Java并發(fā)編程的系列文章,一共有20多篇,感興趣的朋友可以關(guān)注我的酷米號(hào),并查看相應(yīng)的文章)。
Java的Socket通訊是學(xué)習(xí)Java網(wǎng)絡(luò)開(kāi)發(fā)首先接觸到的內(nèi)容,這個(gè)過(guò)程要了解一系列用于網(wǎng)絡(luò)通訊的協(xié)議在使用上的區(qū)別(UDP、TCP),包括Socket、ServerSocket、DatagramSocket、MulticastSocket、URL、Proxy等類的使用??梢哉f(shuō)這部分內(nèi)容屬于Java網(wǎng)絡(luò)編程的基礎(chǔ)部分,也是整個(gè)Java學(xué)習(xí)過(guò)程中的初級(jí)部分。
接下來(lái)要學(xué)習(xí)的內(nèi)容涉及到流媒體的傳輸,比如常見(jiàn)的語(yǔ)音、視頻的傳輸(具有實(shí)時(shí)性要求),這部分內(nèi)容就有一定難度了,往往需要架設(shè)專門的服務(wù)器(集群)來(lái)解決通信問(wèn)題(誤碼率等)。我在2006年的時(shí)候參與了一個(gè)Voip項(xiàng)目組,當(dāng)時(shí)我的任務(wù)就是使用Java程序來(lái)完成終端功能的實(shí)現(xiàn),我也參與了網(wǎng)關(guān)的編寫,這是一個(gè)比較龐大的工程,參與者也非常多。
總的來(lái)說(shuō),使用Java做聊天應(yīng)用是非常鍛煉學(xué)習(xí)者編程能力的,在開(kāi)發(fā)的過(guò)程中還能比較系統(tǒng)的了解網(wǎng)絡(luò)通信過(guò)程以及數(shù)據(jù)交換過(guò)程,這對(duì)以后的編程工作會(huì)有較大的幫助。
我目前的主要研究方向是大數(shù)據(jù)和人工智能,同時(shí)也在帶相關(guān)方向的研究生,我會(huì)陸續(xù)在酷米上寫一些關(guān)于軟件開(kāi)發(fā)方面的文章,感興趣的朋友可以關(guān)注我的酷米號(hào),相信一定會(huì)有所收獲。
如果有軟件類問(wèn)題,也可以咨詢我,謝謝!
網(wǎng)友解答:簡(jiǎn)單的聊天工具實(shí)現(xiàn)就只是應(yīng)用JAVA對(duì)TCP協(xié)議的支持,而JAVA自身有很多模塊,不同的領(lǐng)域和企業(yè)業(yè)務(wù)需求用到的模塊也不相同!
JAVA Socket算是JAVA當(dāng)中比較重要的一部分,但并不是需要你刻意去表現(xiàn)的一部分,對(duì)于高級(jí)工程師這只是基礎(chǔ),當(dāng)然還得看你的聊天工具是否支持在互聯(lián)網(wǎng)條件下的應(yīng)用!大部分高級(jí)工程師會(huì)在熟練這些基礎(chǔ)之后,會(huì)花精力和時(shí)間在框架的開(kāi)發(fā)上,因?yàn)榭蚣艿拈_(kāi)發(fā)注重的是高效,擴(kuò)展性,和伸縮性,并且對(duì)個(gè)人的語(yǔ)言設(shè)計(jì)能力要求還是相當(dāng)高的,學(xué)習(xí)JAVA要做到系統(tǒng)化,規(guī)范化,進(jìn)而再去延伸數(shù)據(jù)庫(kù),中間件,負(fù)載均衡,日志分析等方面的應(yīng)用!
對(duì)于聊天系統(tǒng),我認(rèn)為,你最多能會(huì)用到的JAVA技術(shù): JAVA網(wǎng)絡(luò)編程,JAVA的ORM框架,JAVA的多線程,JAVA的NIO框架和一些消息緩存中間件!如果你的應(yīng)用中用到了這些,那么你就達(dá)到了高級(jí)工程師的水平,但是,如果這些簡(jiǎn)簡(jiǎn)單單只用到了其中一兩處,對(duì)整體的應(yīng)用框架沒(méi)有多大改變,本質(zhì)的提升以及并沒(méi)有滿足可擴(kuò)展性的要求,就不算真正達(dá)到高級(jí)工程師的水平,JAVA整個(gè)行業(yè)更注重的是對(duì)各種應(yīng)用框架的整合,而這需要對(duì)設(shè)計(jì)模式有更深入的了解!
JAVA中的重點(diǎn)在于設(shè)計(jì)模式和自我學(xué)習(xí)能力,由于互聯(lián)網(wǎng)技術(shù)的發(fā)展,各種應(yīng)用框架層出不窮,就拿Springframework來(lái)說(shuō)吧,就這樣一個(gè)框架,從Bean到ORM到TX到JMS再到MVC,再到SpringBoot ,Spring Cloud等等,這一個(gè)框架就包含多個(gè)模塊支持,為什么?因?yàn)檎麄€(gè)行業(yè)的應(yīng)用容量是相當(dāng)龐大的,技術(shù)層出不窮,所以對(duì)于JAVA工程師的重點(diǎn)在學(xué)習(xí)能力,對(duì)設(shè)計(jì)模式的應(yīng)用能力,這些能力對(duì)于團(tuán)隊(duì)協(xié)作開(kāi)發(fā)至關(guān)重要!
作為程序員最忌諱的是在技術(shù)實(shí)現(xiàn)后,沉浸在驕傲感之中,這會(huì)讓自己迷失自我,可能會(huì)因此排斥他人的代碼設(shè)計(jì),更或者嚴(yán)重一點(diǎn)固步自封!對(duì)于很多人,去承認(rèn)自己的技術(shù)不足是很難的,若想做的更好,達(dá)到高級(jí)工程師,系統(tǒng)架構(gòu)師,以及更高的崗位首席技術(shù)執(zhí)行官都必須學(xué)會(huì)接納他人的想法,不斷改進(jìn)和吸收,才會(huì)讓自己的能力和價(jià)值得到提現(xiàn)!
希望對(duì)讀者有所幫助,也希望越來(lái)越多的人能夠理解企業(yè)對(duì)于程序員的要求!共同努力!