Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- DBMS
- 네트워크
- Javascript
- oracle
- 인터페이스
- Python
- docker
- springboot
- spring
- 티스토리챌린지
- MariaDB
- SQL
- mssql
- 자바
- 후기
- 독서
- 명령어
- 인덱스
- PostgreSQL
- git
- 리눅스
- Linux
- IntelliJ
- mysql
- pandas
- github
- 오블완
- 책
- java
- error
Archives
- Today
- Total
hanker
[JAVA] Java 11 이상에서 sun.misc.BASE64Encoder 대체하기 본문
반응형
자바에서 Base64 인코딩/디코딩을 할 때 아직도 sun.misc.BASE64Encoder를 사용하고 있다면, 이제는 사용할 수 없다.
Java 8부터 사용이 권장되지 않았고(deprecated), Java 9부터는 아예 코드에서 제거되었기 때문에 최신 자바 환경에서는 컴파일조차 되지 않는다.
대신, Java 8부터 표준 라이브러리에 포함된 공식적인 대체재인 java.util.Base64 클래스를 사용해야 한다.
이 클래스는 Base64 작업을 위한 안정적이고 안전하며 공식적으로 지원되는 방법을 제공한다.
Java 11 버전 이상에서 Base64 인코딩/디코딩 예제
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String originalInput = "Hello, Java 21!";
// 인코딩
String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes());
System.out.println("Encoded: " + encodedString);
// 디코딩
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);
System.out.println("Decoded: " + decodedString);
}
}
설명 :
- import java.util.Base64;: 필요한 클래스를 임포트
- Base64.getEncoder(): 인코딩을 위한 Base64.Encoder 인스턴스를 반환
- originalInput.getBytes(): 입력 문자열을 바이트 배열로 변환 (기본적으로 UTF-8 인코딩 사용)
- encodeToString(...): 바이트 배열을 Base64로 인코딩된 String으로 변환
- Base64.getDecoder(): 디코딩을 위한 Base64.Decoder 인스턴스를 반환
- decode(encodedString): Base64 문자열을 다시 바이트 배열로 디코딩
- new String(decodedBytes): 디코딩된 바이트 배열을 다시 String으로 변환
정리
항목 | sun.misc.BASE64Encoder | java.util.Base64 |
패키지 | sun.misc (내부 API) | java.util (공식 API) |
도입 시점 | 아주 오래됨 (Java 1.1 이상) | Java 8부터 표준, 계속 지원 중 |
지원 종료 | Java 9부터 제거됨 | 계속 공식 지원 중 |
표준 여부 | 비표준 (내부 전용) | 표준 (공식 JDK API) |
보안/안정성 | JDK 내부 변경에 따라 불안정 | 안전하고 안정적 |
URL-safe 지원 | 없음 | getUrlEncoder(), getUrlDecoder() 제공 |
MIME 지원 | 없음 | getMimeEncoder(), getMimeDecoder() 제공 |
멀티스레드 안전성 | 스레드 안전하지 않음 | 스레드 안전함 |
사용 권장 여부 | 사용 금지 (제거됨) | 적극 권장 |
- sun.misc.BASE64Encoder는 더 이상 사용해서는 안 되며, Java 9부터는 아예 존재하지 않음.
- java.util.Base64는 기능도 더 많고, 공식적으로 지원되며, 보안성과 호환성도 높음.
반응형
'JAVA' 카테고리의 다른 글
[Java] javax.servlet.http.HttpSession (웹 사용자 세션 관리) (4) | 2025.06.15 |
---|---|
[JAVA] java 11 버전과 java 17 버전의 핵심 차이점 (3) | 2025.05.29 |
[JAVA] java 8버전과 java 11버전의 핵심 차이점 (2) | 2025.05.26 |
Java - 지역 번호, 핸드폰 번호 변환 (format) (0) | 2025.03.11 |
Java - Custom Annotation 만들기 (기본 개념과 구현 방법) (0) | 2025.02.25 |