OSS探訪GitHubでログイン

GraphQL specificationをJVMで実装しschema・execution・instrumentationを組み立てるJava library

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
6,220
主要言語
Java
ライセンス
MIT
リポジトリ最終更新
2026/10/02
ページ内ナビ

概要

GraphQL JavaはGraphQL specificationをJavaで実装するcore libraryです。SDLからschemaを組み立て、DataFetcherをruntime wiringへ接続し、GraphQL execution engineへqueryを渡す構成を取り、transportやWeb frameworkとは分離して利用できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

GraphQLSchemaを中心にquery execution pipelineを構成する

graphql.GraphQLがquery executionのentry pointとなり、schema・execution strategy・validation等を組み合わせてExecutionResultを返します。

出典:[3]

SDLをparseしDataFetcher・scalar・type resolverをRuntimeWiringへ接続する

SchemaParserでSDLをTypeDefinitionRegistryへ変換し、RuntimeWiringでDataFetcher、custom scalar、type resolver等を登録して実行可能なschemaへ組み立てられます。

出典:[4][5]

Instrumentationでvalidation・field fetch等のexecution stepを観測・拡張する

Instrumentation SPIはexecution lifecycleへhookし、field fetchの計測、logging、validation周辺の観測などをrequest単位のstateとともに実装できます。async executionを前提にthread safetyも考慮する必要があります。

出典:[6]

向いている用途

Spring等のtransport層から独立してGraphQL engineを組み込みたいJava applicationに向く

HTTP serverやSpring integrationを固定せず、既存Java serviceへGraphQL execution engineを直接組み込みたい場合に適します。framework側integrationとcore libraryを分けて設計できます。

出典:[1][3]

導入前の確認

26.1は26系のbugfix releaseでbreaking changeを含まない

v26.1は26.0に対するbugfix releaseとして、SDL validation、schema rebuild、subscription context等の修正をまとめています。upgrade時は26.0との差分をrelease noteで確認できます。

出典:[2]

consumer bytecodeはJava 11 baselineだがsource build toolchainはJava 25を使う

v26.1のbuild.gradleはJava toolchain 25でbuildしrelease targetを11にしています。library利用環境とrepository自体をbuildするJDK要件は異なるため、contributionやsource buildではtoolchainを分けて確認してください。

出典:[7]

参考にした公式資料

  1. [1]GraphQL Java v26.1 README(2026-10-04)
  2. [2]GraphQL Java v26.1 release(2026-10-04)
  3. [3]GraphQL execution entry point(2026-10-04)
  4. [4]SchemaParser source(2026-10-04)
  5. [5]RuntimeWiring source(2026-10-04)
  6. [6]Instrumentation SPI source(2026-10-04)
  7. [7]GraphQL Java v26.1 build configuration(2026-10-04)
  8. [8]GraphQL Java MIT license(2026-10-04)
編集部からの補足

graphql-javaはGraphQL execution engineのcore libraryです。HTTP transportやSpring integrationは別layerなので、server framework・authentication・authorizationはapplication側で設計してください。

3ステップで試す

  1. 1

    GraphQL Java 26.1用の最小Maven projectを作る

    consumer baselineのJava 11でcompileするisolated Maven projectに26.1を固定します。

    mkdir -p graphql-java-demo/src/main/java/demo && printf '%s\n' '<project xmlns="http://maven.apache.org/POM/4.0.0">' '<modelVersion>4.0.0</modelVersion>' '<groupId>demo</groupId><artifactId>graphql-java-demo</artifactId><version>1.0.0</version>' '<properties><maven.compiler.release>11</maven.compiler.release></properties>' '<dependencies><dependency><groupId>com.graphql-java</groupId><artifactId>graphql-java</artifactId><version>26.1</version></dependency></dependencies>' '</project>' > graphql-java-demo/pom.xml
  2. 2

    SDLとDataFetcherから最小schemaを組み立てる

    SchemaParser、RuntimeWiring、DataFetcher、GraphQL executionの最小flowを作ります。

    printf '%s\n' 'package demo;' 'import graphql.GraphQL;' 'import graphql.ExecutionResult;' 'import graphql.schema.GraphQLSchema;' 'import graphql.schema.idl.*;' 'public class Main {' ' public static void main(String[] args) {' ' var types = new SchemaParser().parse("type Query { hello: String }");' ' var wiring = RuntimeWiring.newRuntimeWiring().type("Query", t -> t.dataFetcher("hello", e -> "world")).build();' ' GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(types, wiring);' ' ExecutionResult result = GraphQL.newGraphQL(schema).build().execute("{ hello }");' ' System.out.println(result.toSpecification());' ' }' '}' > graphql-java-demo/src/main/java/demo/Main.java
  3. 3

    compileしてquery resultを確認する

    HTTP serverを立てずcore libraryだけで{ hello }を実行し、dataが返ることを確認します。

    cd graphql-java-demo && mvn -q compile dependency:build-classpath -Dmdep.outputFile=cp.txt && java -cp "target/classes:$(cat cp.txt)" demo.Main
公式READMEで確認

成長

成長の推移 · 直近30日

6,220 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
15
Open PR
24

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • graphql
  • graphql-java
  • java
Stars
6,220
Forks
1,142
Watchers
193
Open Issues
25
Contributors
239
所有者種別
Organization
主要言語
Java
ライセンス
MIT
リポジトリ最終更新
2026/10/02

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?