言語・開発

【Javaコード入門】データベース

Javaでは、アプリからデータベースに接続するためのAPIとして、JDBCと呼ばれるライブラリを標準で提供しています。JDBCとは、データベース製品ごとの仕様差を吸収し、共通した操作手段を提供するAPIです。JDBCを利用することで、アプリ開発者は(たとえば)…

【Javaコード入門】データベース_⑤setAutoCommit/commit/rollbackメソッド

トランザクションを利用する – setAutoCommit/commit/rollbackメソッド public void setAutoCommit(boolean auto) throws SQLExceptionpublic void commit() throws SQLExceptionpublic void rollback() throws SQLException auto:自動コミットを有効にす…

【Javaコード入門】データベース_④executeQueryメソッド

データベースを検索する – executeQueryメソッド ResultSet executeQuery() throws SQLExceptionT getXxxxx(String column throws SQLException) T:データ型(String、int、double、Blobなど) column:フィールド名 SELECT命令を実行するには、PreparedSta…

【Javaコード入門】データベース_③prepareStatement/executeUpdateメソッド

データベースに登録する – prepareStatement/executeUpdateメソッド PreparedStatement prepareStatement(String sql) throws SQLExceptionvoid setXxxxx(int index, T value) throws SQLException int executeUpdate() throws SQLException sql:発行するS…

【Javaコード入門】データベース_②データベースに接続/切断する

public static Connection getConnection(String url, String user, String password) throws SQLException url:データベース接続文字列 user:ユーザー名 password:パスワード データベースを操作するためには、まずはデータベースに接続しなければなりま…

【Javaコード入門】Javaとは

Javaは、旧サン・マイクロシステムズ社(現在はOracle社の完全子会社)が1995年に発表したプログラミング言語の一種です。発表直後は、主にブラウザー上で動作するJavaアプレットとして利用されていましたが、現在ではサーバーサイド開発を中心に、家電への…

【Javaコード入門】Javaとは_⑦はじめてのJavaプログラム

Eclipseを利用して、「こんにちは、世界!」と表示するだけの簡単なアプリを作成してみましょう。Eclipseの基本的な使い方を理解すると共に、Javaアプリの文法を概観します。 [1]Eclipseを起動する Eclipseは、Pleiadesを展開した/pleiades/2024-09フォル…

【Javaコード入門】Javaとは_⑥開発環境の準備(Javaのバージョン変更)

執筆時点でEclipseに同梱されているJavaのバージョンは21です。ここでは、これをJava 23.0.1に変更します。以降も本稿では、Java 23.0.1を採用します。 Javaのバージョンを変更するには、メニューバーの[ウィンドウ]-[設定]を選択します。[設定]画面…

【Javaコード入門】Javaとは_⑤開発環境の準備(JDK単体)

Eclipse(Pleiades)を利用しない場合、もちろん、JDKを単体でインストールすることもできます。JDKには、Oracle社が提供するOracle JDK(商用ビルド)もありますが、本サイトではオープンソース実装であるOpenJDKを採用します。OpenJDKのインストールには、…

【Javaコード入門】Javaとは_④開発環境の準備

Javaでアプリを開発するには、一般的に、以下のソフトウェアをインストールしておきます。 (1)JDK(Java Develpment Kit) Javaアプリを実行するためのJava仮想マシンをはじめ、コンパイラーやデバッガーなどのツールを備えたJava開発環境です。コードその…

【Javaコード入門】Javaとは_③Javaの変遷

以下は、JavaSEの大まかな歴史です。 Javaのバージョン バージョン 時期 主な新機能など JDK 1.0 1996年1月 初期バージョン JDK 1.1 1997年2月 国際化対応、JDBC API J2SE 1.2 1998年12月 コレクションフレームワーク、Swing、リフレクション J2SE 1.3 2000…

【Javaコード入門】Javaとは_②Javaの構成

Javaでは、目的に応じて、もともとは以下のようなエディションが用意されていました。 Javaのエディション エディション 概要 Java SE(Java Platform, Standard Edition) Javaの基本となるエディション Java EE(Java Platform, Enterprise Edition) サー…

【Javaコード入門】Javaとは_①Javaとは

以下に、Java言語の主な特徴をまとめます。 (1)オブジェクト指向言語である オブジェクト指向とは、アプリケーションの中で扱う対象をオブジェクト(モノ)と見立てて、その組み合わせによって機能を作り上げていく手法のことを言います。Javaに限らず、多…

「技術はビジネスの武器」クラウド二刀流・G-gen杉村CTOが語る、未経験から市場価値を高める学習法とAI時代の生存戦略

クラウドエンジニアとして転職・キャリアアップを目指すなら必読。未経験からIT業界へ転身したG-gen CTO杉村勇馬氏が、基礎力の重要性やAWS・Google Cloudの学び方、AI時代に求められるスキルを語ります。

【Javaコード入門】スレッド

スレッド(thread)とは、プログラムを実行する際の最小単位です。デフォルトで、Javaのアプリケーションはメインスレッドと呼ばれるスレッドひとつで動作しています(シングルスレッド)。しかし、たとえばネットワーク通信など時間のかかる処理をシングル…

【Javaコード入門】スレッド_⑤Executorsクラス

スレッドプールを利用する – Executorsクラス public static ExecutorService newFixedThreadPool([int t [,ThreadFactory factory]])public static ExecutorService newSingleThreadExecutor([ThreadFactory factory])static ExecutorService newThreadPerT…

【Javaコード入門】スレッド_④AtomicXxxxxクラス

ロックフリーな同期処理を実装する – AtomicXxxxxクラス java.util.concurrent.atomicパッケージでは、値の代入/取得といった処理をハードウェアレベルでアトミックに実行する手段を提供します。 AtomicBoolean AtomicInteger AtomicIntegerArray AtomicLon…

【Javaコード入門】スレッド_③ReentrantLockクラス

明示的にロックを獲得する – ReentrantLockクラス public void lock()public void unlock() synchronizedブロックによる同期は、アプリ開発者がロックの獲得/解除を意識しなくても良いことから「暗黙的なロック」と呼ばれます。対して、メソッドを跨る処理…

【Javaコード入門】スレッド_②synchronized修飾子/ブロック

マルチスレッド環境における排他制御 – synchronized修飾子/ブロック マルチスレッド環境で、共有のデータを操作する際には、処理の競合に注意です。 たとえば以下は、インスタンス変数countを複数のスレッドから同時にインクリメント操作する例ですが、こ…

【Javaコード入門】スレッド_①Threadクラス/Runnableインターフェイス

スレッドを実行する – Threadクラス/Runnableインターフェイス スレッドを実行するには、Threadクラス(java.langパッケージ)を継承したサブクラスを用意する方法と、Runnableインターフェイス(java.langパッケージ)を実装したサブクラスを用意する方法…

【Javaコード入門】ユーティリティ

ここまでの節では扱えなかった役立つ機能を、以下にまとめます。 ユーティリティ_目次 getPropertiesメソッド Randomクラス DateFormatクラス NumberFormatクラス Timerクラス Optionalクラス

【Javaコード入門】ユーティリティ_⑥Optionalクラス

Optionalクラス(java.utilパッケージ)は、nullチェックを簡単化し、NullPointerExceptionの発生を未然に防ぐためのクラスです。 たとえば以下は、メンバー情報をMapで管理するUtilMemberListクラスと、これを利用するためのサンプルです。まずは、Optional…

【Javaコード入門】ユーティリティ_⑤Timerクラス

タイマーで定期処理する – Timerクラス public void schedule(TimerTask task, long delay[, long period])public void scheduleAtFixedRate(TimerTask task, long delay, long period) task:定期実行するタスク delay:タスクを実行する前の遅延時間(ミリ…

【Javaコード入門】ユーティリティ_④NumberFormatクラス

数値を整形する – NumberFormatクラス public static NumberFormat getInstance([Locale loc])public static NumberFormat getCurrencyInstance([Locale loc])public static NumberFormat getIntegerInstance([Locale loc])public static NumberFormat getPe…

【Javaコード入門】ユーティリティ_③DateFormatクラス

日付/時刻を整形する – DateFormatクラス public static final DateFormat getInstance()public static final DateFormat getDateInstance([int dStyle [,Locale loc]])public static final DateFormat getTimeInstance([int tStyle [,Locale loc]])public …

【Javaコード入門】ユーティリティ_②Randomクラス

乱数を取得する – Randomクラス Random([long seed]) seed:シード値 乱数を生成するには、Randomクラス(java.utilパッケージ)を利用します。Randomクラスでは、取得したい引数の型に応じて、以下のようなメソッドが用意されています。 Randomクラスの主な…

【Javaコード入門】ユーティリティ_①getPropertiesメソッド

システムプロパティを取得する – getPropertiesメソッド public static Properties getProperties() System.getPropertiesメソッドを利用することで、現在のプラットフォームにおけるシステムプロパティの情報を取得できます。 UtilProp.java package com.ex…

【Javaコード入門】HTTP通信

HTTP(HyperText Transfer Protocol)で外部のサービス/コンテンツにアクセスするには、Java 10以前であれば、URLConnectionクラス(java.netパッケージ)やApache HttpComponents(https://hc.apache.org/)を、Java 11以降であればHttpClientクラス(java…

【Javaコード入門】HTTP通信_②HttpClientクラス

public static HttpClient newHttpClient() HttpClientクラスはJava 11で追加された新しいHTTPクライアントで、以下のような特徴を持っています。 HTTP 2に対応 WebSocket通信(=軽量な双方向通信)に対応 非同期メソッドを提供 以下では、指定されたURLか…

【Javaコード入門】HTTP通信_①URLConnectionクラス

HTTP通信を実行する – URLConnectionクラス public URLConnection openConnection([Proxy proxy]) throws IOException proxy:接続に利用するプロキシ URLConnectionクラス(java.netパッケージ)を利用することで、HTTP経由でWebページにアクセスできます。…

【Javaコード入門】ソケット通信

ソケットとは、通信するアプリケーション同士の出入り口のことで、IPアドレスとポート番号の組み合わせで表現できます。Javaでは、このソケットに対するデータの入出力をストリームを利用して行います。 ソケット通信では、TCP(Transmission Control Protoc…

【Javaコード入門】ソケット通信_②Socketクラス

クライアント側のソケットを操作する – Socketクラス Socket(InetAddress address, int port)Socket(String host, int port) address:接続先のアドレス host:接続先のホスト port:ポート番号 同じくクライアントソケットを生成します。サーバーソケットが…

【Javaコード入門】ソケット通信_①ServerSocketクラス

サーバー側のソケットを操作する – ServerSocketクラス public ServerSocket(int port) throws IOException port:ポート番号 ソケット通信では、通信を試みるコンピューター(クライアント)と待ち受けるコンピューター(サーバー)とが存在します。サーバ…

【Javaコード入門】Stream API

Stream APIは、繰り返し処理のためのAPIです。コレクション、ファイルなどのデータソースから個々の要素を取り出して、これを処理の流れ(=Stream)に引き渡すためのしくみを提供します。Streamの中ではデータが加工されていき、出口で加工した結果を得られ…

【Javaコード入門】Stream API_④Streamの終端処理

終端処理では、Stream内で加工/フィルターされた値を最終的に出力/集計します。Streamでは、中間処理の時点では処理をストックします。そして、終端処理が呼び出されたところでまとめて加工/フィルターなどを実施します(遅延処理)。その性質上、中間処…

【Javaコード入門】Stream API_③Streamによる中間処理

Streamの中を流れる値(個々の要素)を加工/フィルターするプロセスが、中間処理です。ひとつのStream処理につき、中間処理は0個以上複数持つことが可能です。 値を加工する – mapメソッド public <R> Stream<R> map​(Function mapper) T:元の要素の型 R:加工後</r></r>…

【Javaコード入門】Stream API_②Streamの生成

以下に、Streamを生成する基本的な方法をまとめます。 オブジェクトをStreamに変換する リスト、文字列など、クラスによっては現在のインスタンスをもとにStreamを生成できます。以下に主なものをまとめます。 Streamに変換するための主なメソッド メソッド …

【Javaコード入門】Stream API_①Stream APIの基本

Stream APIによる処理は、大雑把に以下のように分類できます。 データソースからStreamを生成 加工/フィルターなどの中間処理 最終的な集計/出力などの終端処理 たとえば以下は、リストから5文字以上の文字列だけを抽出し、その頭文字だけを順に出力する例…

【Javaコード入門】日付/時刻(Date-Time API)

Java 8からは日付/時刻を扱う新しいAPIとして、Date and Time APIが導入されました。Date-Time APIの実体は、java.timeパッケージです。 日付/時刻(Date-Time API)_目次 日付/時刻(Date-Time API) now/of/parseメソッド formatメソッド betweenメソ…

【Javaコード入門】日付/時刻(Date-Time API)_⑥Date/Calendarクラス⇔DateTime-APIのクラスを相互変換する

Date/Calendarクラス⇔DateTime-APIのクラスを相互変換する public static Date from(Instant instant) … Datepublic Instant toInstant() … Date/Calendarpublic static LocalDateTime ofInstant(Instant instant, ZoneId zone) … XxxxxDateTime instant:…

【Javaコード入門】日付/時刻(Date-Time API)_⑤日時データを演算する

public LocalDateTime plus(long value, TemporalUnit unit)public LocalDateTime minus(long value, TemporalUnit unit) value:増減分 unit:単位 plus/minusメソッドを利用することで、日付時刻要素を加算/減算できます。引数unitには、TemporalUnitイ…

【Javaコード入門】日付/時刻(Date-Time API)_④betweenメソッド

日付/時刻値の差を求める – betweenメソッド public static Period between(LocalDate start, LocalDate end) … Periodpublic static Duration between(Temporal start, Temporal end) … Duration(※) start:開始日時 end:終了日時 Period/Duration#bet…

【Javaコード入門】日付/時刻(Date-Time API)_③日付時刻値を整形する - formatメソッド

public String format(DateTimeFormatter formatter) formatter:整形に利用するフォーマッター formatメソッドを利用することで、日付時刻値を規定の形式に整形できます。引数formatterには、DateTimeFormatter型のフォーマッターを指定できます。フォーマ…

【Javaコード入門】日付/時刻(Date-Time API)_②now/of/parseメソッド

日付/時刻値を生成する – now/of/parseメソッド public static LocalDateTime now()public static LocalDateTime of(int year, int month, int day,int hour, int minute [,int second [,int nano]])public static LocalDate parse(CharSequence text) ye…

【Javaコード入門】日付/時刻(Date-Time API)_①日付/時刻(Date-Time API)

Java 8からは日付/時刻を扱う新しいAPIとして、Date and Time APIが導入されました。Date-Time APIの実体は、java.timeパッケージです。以下に、java.timeパッケージで提供されている主なクラスをまとめます。 LocalDateTime/LocalDate/LocalTime:時差情…

【Javaコード入門】日付/時刻

Javaで日付 / 関連の操作を行うには、Calendarクラス(java.utilパッケージ)を利用します。 日付/時刻_目次 日付/時刻 getTimeメソッド getメソッド setメソッド addメソッド rollメソッド clearメソッド before/equals/afterメソッド

【Javaコード入門】日付/時刻_⑧before/equals/afterメソッド

日付を比較する – before/equals/afterメソッド public boolean after(Object when)public boolean before(Object when)public boolean equals(Object when) when:比較するカレンダー カレンダーの大小を比較するには、before/equals/afterメソッドを利…

【Javaコード入門】日付/時刻_⑦clearメソッド

日付/時刻要素をクリアする – clearメソッド public final void clear([int field]) field:クリアする時刻/日付フィールド clearメソッドを利用することで、指定された日付/時刻要素(getメソッドの表を参照)の値をクリアします。クリアされたフィール…

【Javaコード入門】日付/時刻_⑥rollメソッド

日付/時刻要素を加算/減算する(ローリング) – rollメソッド public void roll(int field, int amount)public abstract void roll(int field, boolean up) field:加算/減算する日付/時刻フィールド(getメソッドの表を参照) amount:増減分 up:増加…

【Javaコード入門】日付/時刻_⑤addメソッド

日付/時刻要素を加算/減算する – addメソッド public abstract void add(int field, int amount) field:演算する日付/時刻フィールド amount:増減分 現在の日付/時刻要素を基準に、値を加算/減算するには、addメソッドを利用します。addメソッドでは…