Java 학습소
Java Learning Lab
Java의 핵심과 최신 기능을 예제로 배우는 학습 도구 — OOP, 제네릭·컬렉션, 스트림·람다, 동시성, 모던 Java(record·sealed·switch 패턴). 예제마다 미리 계산한 예상 출력과 3개 국어 설명을 제공합니다. 라이브 JVM은 아닙니다.
코딩 실습
Java의 핵심과 최신 기능을 브라우저에서 예제로 배우는 도구입니다. 라이브 JVM은 아니며, 각 예제의 “예상 출력”은 미리 계산해 둔 값입니다.
☕실제 JVM을 실행하지 않습니다. 아래 출력은 이 코드를 javac로 컴파일해 java로 실행하면 나오는 결과를 미리 적어 둔 것입니다.
클래스, 인터페이스, 상속, 다형성, 캡슐화, 추상 클래스, static/final을 예제로.
난이도:✅ 진행률: 0 / 23
예제
☕ Java 코드
public class Main {
// A simple class with private fields (encapsulation).
static class Dog {
private final String name; // final: assigned once
private int age;
Dog(String name, int age) { // constructor
this.name = name;
this.age = age;
}
String speak() { // instance method
return name + " says woof (age " + age + ")";
}
void haveBirthday() { age++; }
}
public static void main(String[] args) {
Dog d = new Dog("Rex", 3);
System.out.println(d.speak());
d.haveBirthday();
System.out.println(d.speak());
}
}▶ 예상 출력
Rex says woof (age 3)
Rex says woof (age 4)💡 개념 설명
- •클래스는 상태(필드)와 동작(메서드)을 묶는 설계도이고, new로 인스턴스를 만듭니다.
- •private 필드로 내부 상태를 감추는 것이 캡슐화입니다. 외부는 메서드를 통해서만 접근합니다.
- •final 필드는 생성자에서 한 번만 대입할 수 있어 불변 값을 표현합니다.
- •this는 현재 인스턴스를 가리키며, 매개변수와 필드 이름이 겹칠 때 구분에 씁니다.
이어서 해볼 도구
같은 흐름으로 이어지는 도구를 골라 두었습니다.
- Rust 학습소Rust의 어려운 부분을 인터랙티브하게 배웁니다 — 소유권·빌림 시각화, 라이프타임, 열거형·패턴 매칭, 트레잇·제네릭, 그리고 예상 출력이 담긴 단계별 예제 라이브러리. 실제 컴파일러는 돌리지 않고, 모든 결과와 rustc 스타일 에러를 학습용으로 미리 계산합니다.
- JS 샌드박스 — 격리된 QuickJS에서 실행신뢰할 수 없는 JavaScript를 브라우저 안에서 안전하게 실행하세요. 브라우저의 eval()은 실행 시간·메모리를 제한할 수 없지만, WASM으로 컴파일된 QuickJS 엔진은 무한 루프 자동 중단(실행 시간 제한), 메모리 제한, 컨텍스트 격리, 호스트 함수 화이트리스트(capability 보안)를 제공합니다. 기본·응용·심화 예제로 클로저, 프로미스, 제너레이터부터 무한 루프·메모리 폭탄 방어까지 직접 체험하세요.
- WebAssembly 원리 & 만드는 법WebAssembly가 어떻게 동작하고 어떻게 만드는지 배우는 도구입니다. 스택 머신 시각화, 리틀 엔디언 선형 메모리 바이트 그리드, 모듈 구조 해부, Rust·C(Emscripten)·AssemblyScript·Go/TinyGo 컴파일 파이프라인을 눈으로 익혀보세요.
- Lua 놀이터설치 없이 브라우저에서 진짜 Lua 5.4를 실행하세요. wasmoon(WebAssembly) 기반, print 캡처와 반환값 표시, 기본·응용·심화 예제 19종, 자동 채점 미션 10개를 제공해요. Roblox·Redis·Neovim이 사랑하는 그 언어를 바로 체험하세요.