JAVAでバッファオーバーランがあまり出ないのは、
ようするに文字列型があるからというそれだけの理由。


C言語だって可変長文字列を扱うようにすればいいんだが、
問題は可変長文字列を使うとヒープの細分化が起きてしまう事。
C使いはメモリの少ない環境で生きてきたから、こういうのは嫌がるんだよね。

JAVAはどう解決しているかというと解決していない。ゴミ集めを後に回しているだけ。

大規模なアプリとして開発するなら、C言語でもやりようはある。
 たとえば、
 2層開発。C言語でインタプリタシステムを作り、実際の通信アルゴリズムはスクリプト上で実装するとか、
 多くのWebサーバはこういうスタイルだね