Javaに限らず,C系の言語だと似たようなものかも.
コメントや空行などを除いて行を数える:
$ find . -name '*.java' -type f | xargs grep -Ev '^[[:space:]]*((/?\*.*/?)|(//.*))$' | wc -l
ブレイスやセミコロンだけの行を除くならこんな感じか:
$ find . -name '*.java' -type f | xargs grep -Ev '^[[:space:]]*((/?\*.*/?)|(//.*)|[{};][[:space:]]*)$' | wc -l