【tarコマンドについて(Linux)】
------------------------------------------------------------------------
tarコマンドとは
Linuxでは、複数のファイルをまとめて1つのアーカイブファイルとして作成するには「tar」コマンドを使用します。
「tar」コマンドで作成されたアーカイブは拡張子「.tar」として書庫化されて、ファイルの圧縮はされずに1つのファイルをまとめて管理することを目的としています。
圧縮するには「zip」コマンドや後述する拡張子「.tar.gz」形式で行う方法があります。
-----------------------------------------------------------------------
[個人的な感想]
最初tarコマンドはファイルを圧縮・展開するコマンドなんだなって思ってて、
実際オプションをつければそうゆうこともできるから認識自体は間違ってはなさそうやけど
そもそものtarコマンドの主たる目的(機能)は
複数のファイルをまとめて一つのアーカイブという箱にまとめる
ということであって、圧縮・展開に関してはそこについてくるオプション機能(使いたいなら使っていいよ)みたいな感じだった
≪参照≫
【jarファイルとは】
------------------------------------------------------------------------------
jarファイルとは
jarファイルは、「Java Archive」ファイルの略称で、「アーカイブ」つまりJava開発で利用するファイルをまとめて保管しているファイルということになります。
具体的には、jarファイルはコンパイル済みのclassファイルや画像などのファイルを、zip形式に圧縮してまとめたファイルです。
jarファイルはなぜ利用される?
Javaのシステム開発では、いくつものファイルが組み合わさることでシステムとして稼働するように構築していきます。
全てのファイルを1つにまとめると容量が非常に大きくなってしまうことも少なくありません。
ファイルを圧縮して1つのファイルにまとめることで、大幅に容量の節約が可能となります。
さらに、jarファイルはzip形式のファイルと異なり、jarファイルの状態で使用することが出来るメリットがあります。
zip形式のような解凍作業は不要で、利便性が高くなっている点もjarファイルが利用される要因です。
----------------------------------------------------------------------------
[個人的な感想]
jarファイルっていうのはjavaのソースコードを書いたファイル等を圧縮したファイルってことなのか。
しかもzip形式と異なり、解凍不要で使用できる点はかなり熱いですね。
javaの研修等々で見かけたことは度々あったけど
なんのことやらさっぱりわからない状態だったのでスッキリしました。
≪参照≫
【ファイルの拡張子とは】
--------------------------------------------------------------------------------
拡張子とは
拡張子とは、ファイルの種類を示す文字列のことです。
テキストや画像、音声、動画など、ファイルの種類によって使われる拡張子は異なります。
拡張子の役割を理解することで、ファイルの種類の識別や使用するソフトウェアの判断、異なるOSでの互換性の確保などに役立つでしょう。
-------------------------------------------------------------------------------
[個人的な感想]
ファイルの種類を表す文字列のことね、なるほどなるほど。
なんとなーくそんなイメージはあったけど、改めて調べてみると認識が凄いクリアになりました。
これから実務をしていくうえで、頻繁に使う拡張子の名前ぐらいは無意識レベルで理解して仕事できるレベルまでもっていきたいです。
(最近テキストファイルの拡張子が「.txt」だということを覚えたぐらいなので。)
正直意識してファイルの語尾についている拡張子の種類なんてみたことなかったので、
今まではメモ帳のアイコンがあればそれがテキストファイルぐらいの認識しかなかったのですが
これからはGUI環境じゃなくてCUI環境での作業も増えていくことを考えると
頻繁に使うものぐらいは覚えておくと、多少は業務の負担が減りそうだと思いました。
【javaのpackageとは】
---------------------------------------------------------------------------------
packageとは
パッケージ(package)はクラスやインターフェースをグループ化して分ける仕組みです。
Javaでプログラミングをするとたくさんのクラスを作ることはよくあります。たくさんのクラスを作ると同じクラス名を付けることはできません。
しかし、グループ化して分けてさえいれば、同じクラス名を付けていても問題は発生しなくなります。また、同じ機能や関連するクラスをグループ化して分けていることで、クラスも検索し易くなり修正や改良する際に探す手間も省くことができます。
--------------------------------------------------------------------------
[ぼやきのコーナー]
一応javaの研修は受けていたつもりだったんですけど、
まさかpackageがどんなものなのか失念してしまうなんて...
これ基礎中の基礎なのでマジ恥ずかしいです。。。
一応調べたらすぐ思い返すことができたので、完璧に忘れているわけではなかったとこは良かったのと
packageを使うことの利点の部分を改めて認識することができたのでそこは良かったです!
(研修中も恐らく説明はあったはずなんでしょうけど、packageというものの概念を覚えることに精いっぱいで
packageを使うことによって何のメリットがあるのか見たいな話までは理解できていなかったので今回知れてよかったです!)
今度javaの基礎文法をおさらいする記事でも書いて復習しないとあきませんな。
≪参照≫
[↓参照した記事で個人的に見やすかったものとしてこちらも置いときます↓]
【javaのimport文とは】
--------------------------------------------------------------------------------
Java ではあらかじめ用意されたクラスを自分のプログラムの中で利用することができます。
クラスを利用するには java.util.regex.Pattern のようにクラス名にパッケージ名を加えた完全修飾名で記述する必要がありますが、
あらかじめ import 宣言を行っておくことでクラス名だけで記述することができます。
--------------------------------------------------------------------------------
[ぼやきのコーナー]
これも研修で確実にやったんだけど
何をするためのものなのかの認識があまりにもざっくりとしすぎてて
かなり認識が霧がかってたやつだ。
これも改めて調べることで内容を再認識したのに加えて、importを使うメリットも把握できたのでよかったです。
正直私は容量が悪すぎて、一度にたくさんの事を言われても覚えることができないので
「一回見たり聞いたりしたことがある状態」
っていうのを作ったうえで改めて内容を調べるということはかなり大事なのではないかと思っています。
まずそもそも初見の言葉なんて日本語で書いてあったとしても他言語をみたときぐらい
見聞きしたときに抵抗感を覚えるんですよね。
まずその言葉の抵抗感を少なくする作業から入らないとすんなり理解できないんですよね自分って。笑
そこが自分自身が容量悪いと思うところです。
まあスペックなんて人それぞれですから、自分に合ったアプローチで頑張りますよ。
≪参照≫
【javaのextendsとは】
--------------------------------------------------------------------------------
extendsとは
Javaの継承(extends)とは、既存クラスのメソッドやフィールドの内容を引き継ぎながら、新しいクラスを定義することです。
継承元となるクラスのことを「スーパークラス」、継承した新しいクラスのことを「サブクラス」といいます。
---------------------------------------------------------------------------------
[個人的な認識として]
extends(継承)って最初研修で存在を知った時から本当にようけわからんやつで
理解するのが難しかったjavaの機能です。
一応ざっくりとした私の認識は
「自分が今持ち合わせている能力に、他のやつが持っている能力を足して、強くなった自分を作る」
というもので、これをjavaっぽく説明すると
「継承先(サブクラス)のクラスで定義した機能に、
継承元(スーパークラス)のクラスで定義したメソッド等の機能を全て渡して使えるようにしてあげることで
二つのクラスの機能をどちらも使える新しい最強のクラスが出来るよ」
みたいな感じなのかな....恐らく。
実際に能力を譲渡した側(スーパークラス)の機能を使う方法とか(クラス名.メソッド名で記述とかとか)細かいルールみたいなのは存在するにしても
他のクラスの機能を使える最強のクラスを作れるって点ではかなり便利な機能だなとは思います。
でも私はこのextendsに出逢った時からマジで思っていたことが一つあって
これは私の価値観的な話が大いに混ざったかなり私的な意見なのですが、
能力を継承される側・・・能力を受け取るクラスのことを「サブクラス」
能力を譲渡する側・・・能力を渡すクラスのことを「スーパークラス」
というのですが、
『いや、能力を渡されてパワーアップするんやから能力貰った方がスーパーなクラスってことでスーパークラスやろ普通!!!!!!!!!』
ってずっと思ってました。
この「スーパーなクラスなんやから能力高い方がスーパークラスやろ」みたいな考えが変にあったせいで
extendsを理解するのにかなり苦労しました。
まあでもなぜ継承元(能力を渡す方)がスーパークラスで、継承先(能力を受け取る方)がサブクラスなのかっていうのは一応考え方があって
一応理解はしているつもりなんですけど、説明し始めると2時間ぐらいかかりそうなので
どうゆう考えでスーパークラス・サブクラスを分けているのかっていうのを
とてもわかりやすく説明されている記事がありましたので
そちらをご覧いただけると理解できるかと思います。(下記参照)
「スーパー=凄い強そう」
みたいなイメージがあった自分には、理解するのに苦労したっていう話です。
<おまけ>
[オーバーライド]
一緒に覚えておきたいものとしてオーバーライドというものがあって
スーパークラスで既に存在しているメソッドをサブクラスで上書きして
新しいメソッドとして使うことができるもの
≪参考≫
[スーパークラス・サブクラスを分かりやすく解説してくれている記事]
https://mrp-net.co.jp/mrp_blog/tech_20231006/