読者です 読者をやめる 読者になる 読者になる

へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

Java1.7.0_45をインストールしてチュートリアルやってみた

追記(2015.05.23)

この記事へYahooから流れてくる人が多いので追記する。

まず、はじめに言いたいことは、Yahooで検索するなということである。

仮にもプログラミングをやるのならば、Googleで検索したほうがいい。

それはなぜかと言うと、YahooもGoogle検索エンジンを使っているといえども、YahooはGoogleの検索結果にフィルタリングをかけているようであり、マイナーな情報で困ったときに、検索上位に出てこないことが多い。

たとえば

「TypeError: Python 'fake datetime' cannot be converted to a MySQL type」でググる

解決策に近いドキュメントは

Googleだと3件目に出てくるが

f:id:haruharu1:20150523084248p:plain

Yahooだと永遠に出てこない

f:id:haruharu1:20150523084317p:plain

別に普段からGoogle使えというわけではないが、技術関連の情報はググるほうがいいと思う。

 

また、これは1年以上前の記事であり、ぼくがプログラミング言語よくしらない(プログラミング歴2ヶ月目)ときに書いたものであることを明言しておく。

 

やってることはかんたんで、環境変数を通すだけである。

ただ下記のやり方はエイリアスを張っているだけなので、一応動くが酷いやり方である。

 

また、インストールするものはJDKJava SE Development Kit)であり、JREJava SE Runtime Environment)ではない。

JDKっていうのは開発に使うヤツ(開発者向け)

JREっていうのは作られたヤツを動かすためのヤツ(エンドユーザ向け)

 

やり方(これも追記)

とりあえずダウンロードする。 

既にJava1.7.0_45は最新版ではなく、そもそもJava SE7はもう更新されない。

新しくJavaをやる人はJava SE8をインストールするべきである。(新しくて色々やれることが多いから)

↓それでもこのバージョンをダウンロードしたい人は

Java Archive Downloads - Java SE 7

アーカイブにあるやつなのでユーザ登録をしなければいけない。(めんどくさい)

 

x86とかx64とかいうのはCPUアーキテクチャのざっくばらんな分け方なので、

調べれば出てくる。x86が32bitCPU、x64が64bitCPU。86と32bitに意味の繋がりはない。インテルの型番からという歴史的事情があるのでそんなに気にしてはいけない。

とりあえず新しいパソコンならx64でおkなはずだからそれをダウンロードする。

MacWindowsなら、dmgやexeをダウンロードしてそれポチッと押せばいい。

(でもMacならHomebrew、WindowsならChocolateyというパッケージを使ってインストールしたほうがいい)

Linuxなら、tar.gzとかtar.rpmとかのやつをダウンロードする。

rpmっていうのはLinuxの1つであるRed Hat OSのことだ。有料のやつ。

たぶんあなたはRed HatではなくUbuntuとかだから、tar.gzのほうをダウンロードするとうまく行く。

 

tar.gzってなんだ?(これも追記)

圧縮ファイルである。zipみたいなものだ。

zipと違うのは、フォルダ(Linuxではディレクトリと言う)をtarファイルという、アーカイブをつくってから圧縮してフォルダ構造を保つためである。詳細は知らん。

「端末」あるいは「ターミナル」を開いて

$ tar -xvzf さっきダウンロードしたファイルとうちこむ。

$は入力しなくていい。

 

tarという圧縮したり解凍するコマンドを使って、やり方(オプション)はx,v,z,fで、

ダウンロードしたファイルをごにょごにょするよというやつである。

xvzfの意味は$ man tarで出てくる。xvzfの文字の順番は適当でもいい。 

 

圧縮したファイルを環境変数のパスのとこにおく

パスは

$ echo $PATH

で出てくる。$PATHの$はちゃんと入力する。$PATHというのは、環境変数のこと。

環境というのは、まぁショートカットみたいなものだ。

たとえば、/path/to/some_commandというフォルダ構造になっているときに、some_commandだけで起動したら楽だ。

環境に/path/to/を付け加えればsome_commandを打つだけで起動するようになる。

 

とってもシンプルに言うと、「毎回ファイルある場所まで一番上のフォルダからタイピングしてファイル実行するのだるいから、だるくなくしようぜ!」というのが趣旨である。

 

変数というのはここではシェルスクリプトの、値の格納庫である。

たとえばPATHには今<pre>/usr/local/bin:/bin:/usr/sbin:/sbin:/usr/bin</pre>が入っていたとする。

コンピュータはjavaと打たれたときに、ここを見て、あ、/usr/local/bin/にjavaがあったからこれ起動すればいいんだなと判断する。

/usr/local/bin/にjavaがなかったら、/bin/を見に行って、それでもなかったら、/usr/sbin/を見に行って、なかったら、/usr/bin/を見に行って、それもなかったら

javaなんてコマンドないよ!!!!!!!!!」って怒ってくるわけ。

 

ちなみにbinはバイナリという意味で、実行ファイルをここにおくべきなのである。

 

こうやっていっぱいパスがあるのは理由があって、

/usr/local/bin は、基本的にアプリケーションをダウンロードしてインストールすると、ここにファイルが勝手に置かれる。すぐ消せる一番安全なところ。

Macbrew installなどはここに置かれるだけなのである。

(まぁ、本来は勝手に置かれるわけではなくて、あなたも同意しているはずなのだ。)

/bin はOSにもとからついてるファイルが入ってる。だから基本ここにものを入れてはいけない。

/usr/sbin は、スーパーユーザー(Linuxよくわかってない人がうかつにかまうとパソコンがお亡くなりになる可能性があるようなファイルもかまえる特権持ってる人)が使うファイルをおく。

/usr/bin はログインしているユーザが実行するようなところ。

という風にわけているのである。

 

PATHを追加しよう

$ export PATH=$PATH:jdkなんちゃらが置いてある場所/bin

としてあげれば追加される。

これで起動できるようになる。

 

起動できるようになるとは言ったが、いつでも起動できるとは言っていない。

シェル消すとまた起動できなくなる。「え、またこの作業すんの?めんどくせ」と思うだろう。

したがって、シェルを起動するときにこれを……

 

え、ちょっと待って。シェルってなに?

シェルとは、その黒かったり白かったりする画面でコマンドを打つためのツールである。$ にコマンドを打っているというのは 、シェルというLinuxについているアプリケーションに文字を打ち込んで、ファイルとかを実行させているのである。

ちなみにシェルの種類はbashとかshとかbshとかcshとかtcshとかzshとかkshとかいっぱいある。bashが主流。

また、シェルスクリプトプログラミング言語の1つなので、javaをインストールする前に既にあなたはプログラミングをしているのであった。

 

なんでそんなシェルとかいうめんどくさいツールつくったんだよ?

もともとはC言語というプログラミング言語で動かしていたが、それがあまりにもめんどくさすぎたので、「よく使う作業はまとめちゃおうぜ!」ということでシェルスクリプトを神(すごい人)がつくった。

シェルはコマンドが絡む作業に特化したプログラミング言語である。

Javaより楽しい。

 

このシェルは、「ターミナル、あるいは端末」を起動したときや、パソコンを立ち上げたときに裏で起動されてるかなり重要なやつである。

Linux使えます!」という人は主にこのシェルスクリプトを書けて、コマンドをたくさん覚えてて、フォルダ構造知ってて、ネットワークの起動設定などはおちゃのこさいさいな人のことだ。ぼくはあまり使えない。

 

そんなシェルの起動時に、javaも使えるようにパス通そうぜという話

この$ export PATH=$PATH:jdkなんちゃらが置いてある場所/binを、.bash_profileとかに書いておく。これはシェルの起動時に読みこんでくれるファイルだ。無ければ作れ。

そうすると、シェルの起動時にこのファイル読んでくれて、「あっ、ここも見るのか」とOSくんが判断して、

無事javaを使えるようになる。

 

この一連の作業を、インストールと呼ぶのである。

いったいいつインストールするのかと思われたかもしれないが、

これをインストールと呼ぶのである。

インストールとは日本語で「配置する、設置する」という意味であり、

ダウンロードして(ファイル取ってきて)インストールする(しかるべき場所にファイルを設置する)という作業をみんなしているわけである。

 

いいかッ!

インストールとはッ!

断じて「ダブルクリックしたらなんか使えるようになるよね〜(´・ω・`)」という作業のことではないッ!

 

よって、以下に書いてあることはクソである。

 

<<< ここまで追記(これはクソじゃない)

 

JDK7の最新版インストール方法

Java SE Development Kit 7 - Downloads | Oracle Technology Network | Oracle

ここからダウンロードする。

最新版じゃなくてもいいよって場合は、

$ java

ってやったら、sudo apt-get installどーたらって出てくるからそのパッケージをインストールすればいい。

 

32bit版linuxならx86って書いてある方を選択。

JDKってなに?

.javaファイルを.classファイルにコンパイルしたり、その.classファイルを実行したりするヤツ。絶対いるヤツ。

↓どうやってインストールするのかのマニュアル

Linux Platform Install (JDK)

 

コマンドラインjavaとしても何も起こらない、前のバージョンで実行される、環境変数までいじってくれないの?って場合はこれ

How to Install Oracle Java 7 update 45 on Ubuntu 12.10 Linux |

 

ちなみに

解凍したディレクトリ/jdk1.7.0_45/bin/にjavaやjavacがあるので、

そこにaliasしてあげれば、別にこれをしなくてもいい。

したほうがいいと思うけど。

$ echo "alias njava='~/Downloads/jdk1.7.0_45/bin/java'" >> ~/.bashrc

で、ターミナル再起動するみたいな感じ。

 

HelloWorldチュートリアルでいきなり詰んだところ

helloworld.java

 class HelloWorld {

    public static void main(String[] args) {

        System.out.println("Hello World!"); 

    }

}

 これはエラーが出る。

最初のクラスには、ファイル名と同じヤツを指定しないといけない模様。

クラス名を小文字にするのはどうかと思うので、

ファイル名をHelloWorldにしてあげるとうまくいく。

あと、セミコロン忘れてた。

 $ java HelloWorld.class

してみる。

Hello World!

と出る。

少し感動した。