# 研修用資料 ## Javaをやる前に ### 概念図(担当領域) ```mermaid %%{init:{'theme':'base','themeVariables':{'primaryColor':'#6A7FAB','primaryTextColor':'#FAFBF9','primaryBorderColor':'#6A7FAB','lineColor':'#6A7FABCC','textColor':'#6A7FABCC','fontSize':'20px'}}}%% graph LR A("システム") --- B("サーバーサイド・インフラ") A --- C("アプリ開発") B---B1("ネットワーク") B---B2("サーバー") C---C5("組み込み") C---C1("ネイティブアプリ(モバイルアプリ)") C1---C3("Android")---C6("Kotlin/Dart") C1---C4("iOS")---C7("flutter/Swift/Dart") C---C2("Webアプリ") C2---D1("フロントエンド")---E1("HTML") D1---E2("CSS") D1---E3("JavaScript") C2---D2("バックエンド") D2---F1("Java") --> F11("今回やる"); D2---F2("PHP") D2---F3("Ruby") D2---F4("etc...") style F1 fill:#ffaaaa style F11 fill:#000000 ``` ※分け方は一例です。\ 分類自体が山ほどあるので、切り取り方によって変わります。 あくまで初心者がわかりやすく把握するための図だと思ってください。 ## なぜ最初にJavaを学ぶのか - Javaのシェアが多い - https://www.knowledgewing.com/kw/coursemap/ca071101.htm - 社内のシステムでも体感8割はJavaで開発しています - 一部Ruby・Pythonはありますが主流派とは言えないです - 型の知識が身につく - 型があることでプログラムの予期しない動作を未然に防ぎやすくなります - [静的型付けと動的型付けについて](https://qiita.com/toryuneko/items/c023031b61886cae2a99) - [Pythonで型検査しようぜ](https://kk-river108.hatenablog.com/entry/2019/03/10/163457) - 型とは何か(上記URLから引用) ``` そもそもプログラムが扱う値というものは コンピュータから見ればただのメモリやハード上のバイト値です. 型はそのメモリ上に連続するバイトの塊の解釈の仕方を 変えることで人間に扱いやすくするものという認識です. 0x01 => int: 1, char: 'a' ``` - 0x01は16進数表記で、10進数に直すと「1」 - `int`型として解釈するなら、数字の1番目 - `char`型として解釈するなら文字(アルファベット)の1番目 #### 参考:Javascriptの動的型付けの挙動の例 ``` // ElsaとAnnaの年齢を1つずつ加算する class User { constructor(name, age) { this.name = name this.age = age } } user = new User("Elsa", 21) user.age + 1 // 22 user = new User("Anna", "18")// 間違えて文字列を指定してしまった user.age + 1 // '181' ``` ### 1章 Javaの概要 ### 1.Javaとは キーワード:C++ C++とは https://products.sint.co.jp/topsic/blog/c-plus LinuxはC++で作られている WindowsもC++で作られていると予想されている ### 2.Java言語の特徴 1. プラットフォームに非依存 - 主要OS一覧(オレンジがJavaの使えるOS) ```mermaid graph LR A("OS")---B("UNIX") B---C("BSD") C---D("macOS") B---E C---I("FreeBSD") B---H("Solaris") H---H1("OpenSolaris") E("GNU")---F("Linux") A---K(" ")---L(" ")---G("Windows") style L display:none style K display:none style D fill:#ffaa66 style I fill:#ffaa66 style H1 fill:#ffaa66 style G fill:#ffaa66 style F fill:#ffaa66 ``` - 下記URLから作成 - https://penpen-dev.com/blog/linux-unix-bsd-mac-gnu/ - JVMについて - https://www.sejuku.net/blog/19871 2. オブジェクト指向 - 後半で説明します。 3. クラスライブラリ - よく使う機能は最初からクラスとして登録されているので、すぐ呼び出せる 4. シンプルなコード 5. 安定かつ厳密 - コンパイルエラーと実行時エラー - https://saktt-sw.com/java-execute-error 6. 安全なメモリモデル - GarbageCollection(GC)という仕組みでメモリを管理 - https://qiita.com/e_tyubo/items/48398391a8ef0f24c1be 7. マルチスレッド - 並行処理が可能 8. セキュリティ 9. インターネットとの親和性 ## その他の読み物(プログラミング全般) - 暇でやることがないときにでも読んでおくと、色々なことへの理解が深まるかもしれません。 ### linuxコマンドについて https://qiita.com/ine1127/items/64b5b6cf52471c3fe59c https://qiita.com/hattys2/items/56d973ad4f197b751501 https://qiita.com/hirokishirai/items/5a529c8395c4b336bf31 ### HTTPについて https://qiita.com/kanataxa/items/522efb74421255f0e0a1 https://qiita.com/TakahiRoyte/items/949f4e88caecb02119aa [HTTP の進化 ](https://developer.mozilla.org/ja/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP) ### インフラについて https://qiita.com/ya-man/items/59597b7a4f936513ed96 ### 仮想環境について https://qiita.com/9en/items/f4eab2f61485a9f3885a https://www.kagoya.jp/howto/it-glossary/develop/wsl2_linux/
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up