static method != class method ?

えと、なんか書き直し中みたいですが、書き直し前のを見ちゃったのでとりあえず、別の勘違いを指摘しておく。

でもJavaC++ も口が裂けてもそれをクラスメソッド/フィールドとは呼んでいないはずで、C++ではちゃんと「静的メンバ関数」「静的メンバ変数」と正しく読んでいるし、Javaも「静的メソッド」「静的フィールド」と正しく呼んでいたハズ。

なんというか、そこまで言うなら Language Specification を読んだんだろうと思って確認してみた。

A method that is declared static is called a class method.

If a field is declared static, there exists exactly one incarnation of the field, no matter how many instances (possibly zero) of the class may eventually be created. A static field, sometimes called a class variable, is incarnated when the class is initialized.

ということで、普通にクラスメソッド、クラス変数と呼んでかまわない。8.3.2.1 節も「Initializers for Class Variables」だし。
というより、「静的」って言葉のほうが一般のCプログラマーの誤解を生みそうなのだが、どうか。普通に「内部リンケージのメソッドね」って理解されそうだ(それじゃ private だ)。もともと、C++のクラス内の変数、メンバ宣言の修飾子をそのまま持ってきてしまっているので、もとの意味はどっかに行ってしまっているのはないかと思う。
そもそもC言語の頃からグローバル変数や関数の static 修飾子からして、「静的」の意味ではなく、リンケージの範囲を指定する修飾子だったりして、もう何が static やらといった感じなのだが。これほどいろんな意味で使われる予約語も他にあるまい。
閑話休題id:minekoa さんは Python も使うらしいので、python での class method(レシーバがクラスであるメソッド)、 static method(レシーバの存在しないメソッド)の両者が区別されているから、『「クラス」メメソッドじゃない、「静的」メソッドなんだ!!』なんてことを言うのだと思うのだけれども、Javaにはそういう区別はないので、別にクラスメソッドでいいんじゃないかなぁ。実際、クラスに束縛されているわけだし。this で参照できるわけではないけど。

追記

書き直しが終わったようなので。
なんか誤解という話だが、なんというか、「a instance of String」のノリで「a Instance of Class」なら java.lang.Class のインスタンスだろう思ったりするわけで、一般的なインスタンスの話なら単に「インスタンス」って表記すればいいのに、とか思ったりしないでもない。と、自分の誤読をごまかしつつ。

odzさんの記事を読んで、ふとJava プログラマにとって「ロードとは、即ちメタなクラスからクラス実体を作ることである」という感覚は、非常に大切なのかなぁ、と思った。あたしゃロードはロードですよって感覚でしかない。

いや、ロードはロードですよ。ClassLoader ごとに、メタクラス(java.lang.Class に属するインスタンスの意味) がロードされて、インスタンスはそのメタクラスを使って生成するし、クラスフィールドはそのロードされたメタクラスに属するというのが正しいと思う。C++のクラスと違ってメタ情報を実行時にローディングするし、フィールドの帰属先もあるわけで、そこをあえて static と呼ぶのはかえってまずい気がすると。とはいえ、問題になることはほとんど無いけど。
ところで、関数インスタンスって何ですか?C++の関数オブジェクト(ファンクタ)なら知っていますが、文脈を見る限り違うものですよね?Smalltak か Eiffel 方面の用語でしょうか。