본문 바로가기

전체 글

(433)
React Native WebView vs Capacitor 차이 오늘드림 프로젝트를 진행하면서, 웹앱을 모바일 앱으로 감싸기 위한 방법으로 Capacitor를 선택했다. 처음에는 React Native를 사용해야 하나 고민도 했지만, 그중 WebView를 활용한 방식과 Capacitor 기반 하이브리드 앱 구조는 목적과 방식이 명확히 달랐다. 1. WebView란?WebView는 말 그대로 "웹을 보여주는 네이티브 컴포넌트"이다. 웹 페이지를 네이티브 앱 안에서 실행시키고 싶을 때 사용한다. 모바일 앱 안에 웹페이지를 삽입하는 것처럼 동작한다.2. React Native WebView는 어떤 방식인가?React Native WebView는 리액트 네이티브 앱 안에서 컴포넌트를 삽입해 특정 URL이나 HTML 콘텐츠를 보여주는 방식이다. 다시 말해, 앱은 React ..
러너블(Runnable) 객체 Runnable 객체란?자바에서 Runnable은 인터페이스이다. 이 인터페이스에는 메서드가 딱 하나 존재한다.public interface Runnable { void run();}이 인터페이스를 구현하면, 그 구현체는 실행 가능한 작업 단위가 된다. 즉, Runnable 인터페이스의 구현체를 만들면 그것이 바로 러너블 객체이다. 예를 들어 다음과 같이 만들 수 있다.public class MyRunnable implements Runnable { @Override public void run() { System.out.println("작업 실행"); }}이제 이 구현체를 이렇게 만들면,MyRunnable myRunnable = new MyRunnable();myRun..
자바에서 length와 length()의 차이 자바를 배우다 보면 배열의 길이를 구할 때는 length를 쓰고, 문자열의 길이를 구할 때는 length()를 쓰는 것을 볼 수 있다. 이 둘은 이름이 비슷해서 처음에 헷갈리기 쉽지만, 엄연히 다른 개념이다. 이번 글에서는 두 가지의 차이를 정리한다. length는 변수(필드)이다배열의 길이를 구할 때 사용하는 length는 메서드가 아니라 변수이다. 예를 들어 다음과 같은 코드가 있다고 하자.int[] numbers = {1, 2, 3, 4};System.out.println(numbers.length); // 출력: 4여기서 numbers.length는 배열의 길이를 담고 있는 변수이다. 괄호가 붙지 않는 이유는 함수 호출이 아니기 때문이다. 자바에서 배열은 언어 차원에서 제공되는 기본 자료형의 일..
2025-05-07 : 취준하면서 얼마 전 우연히 글맆이라는 브랜드의 상품 개발 회의 영상을 보게 됐다. 평소에도 제품이나 서비스가 어떻게 기획·개발되는지 관심이 많아서 흥미롭게 보던 중, 한 장면이 유독 기억에 남았다. 영상에서는 사용자 입장에서 다소 불편할 수 있는 제품의 제형(형태나 질감 등)에 대해 이야기하고 있었다. 회의 중 누군가가 물었다.“왜 이런 제형을 고집하나요? 호불호가 갈릴 게 분명해 보이는데요.”그때 설득하는 쪽에서 이런 답이 나왔다.“우리는 완벽한 육각형을 만들고 싶었지만, 모든 걸 다 충족시키려고 하면 결국 특색 없는 작은 육각형의 제품만 만들게 되더라고요.”이 한마디가 내게는 매우 인상적이었다. 나도 그동안 취업 준비를 하면서 완벽한 육각형이 되려고 애썼던 건 아닐까 하고 생각이 들었다. 취준 초반에는 나만의..
자바 객체지향 개념 정리: static, 포함, 상속, 내부 클래스 등 자바를 배우면서 헷갈리는 개념들이 여럿 있다. 특히 static, 포함(Composition), 상속(Inheritance), 내부 클래스, 그리고 main 메서드의 구조 같은 부분은 처음에 개념이 쉽게 와닿지 않는다. 이번 글에서는 이 개념들을 하나씩 정리하고, 이해를 돕기 위한 예제도 함께 살펴본다. static은 무엇인가static은 "객체 없이 클래스명만으로 호출할 수 있는 기능"을 의미한다. 보통 객체지향에서는 클래스의 메서드나 변수를 사용하려면 객체를 먼저 생성해야 한다. 하지만 static이 붙으면 객체 없이 바로 접근할 수 있게 된다. 대표적으로 Math.random() 같은 메서드가 이에 해당한다. static은 인스턴스가 아닌 클래스 레벨에서 하나만 존재하며, 여러 객체가 만들어져도 같..
상속과 포함의 차이점 상속과 포함의 차이점 자바에서 객체 지향 프로그래밍을 할 때 반드시 구분해야 할 개념이 상속(Inheritance)과 포함(Composition)이다.비슷해 보이지만 본질적으로 다른 목적을 가지고 있으며, 상황에 따라 적절하게 선택해야 한다. 1. 상속(Inheritance)란?상속은 한 클래스가 다른 클래스의 속성과 메서드를 물려받아 사용하는 개념이다. 이를 통해 코드의 재사용성을 높이고 기능을 확장할 수 있다. 상속받은 클래스(자식 클래스)는 부모 클래스의 기능을 그대로 사용할 수도 있고, 필요에 따라 오버라이딩(재정의)하여 자신만의 방식으로 다시 구현할 수 있다.특징is-a 관계를 표현한다.예: 고양이는 동물이다(Cat is an Animal).부모 클래스의 필드와 메서드를 그대로 물려받는다.오버..
자바 외부 라이브러리 사용법과 접근 범위 자바로 개발하다 보면 JSON 데이터를 다루려면 org.json, Gson 같은 외부 라이브러리가 필요하다.그런데 이런 외부 라이브러리는 자바 기본 라이브러리와 다르게 바로 쓸 수 없다.이 글에서는 자바의 외부 라이브러리 사용법과 패키지별 접근 범위에 대해 정리한다.기본 라이브러리와 외부 라이브러리의 차이자바 기본 라이브러리(예: ArrayList)는 JDK에 포함돼 있어서 import만 하면 바로 사용할 수 있다. 반면 외부 라이브러리는 JDK에 포함돼 있지 않기 때문에 프로젝트에 직접 추가해야 한다. org.json, Gson, Apache Commons 같은 라이브러리가 대표적이다.외부 라이브러리 추가 방법외부 라이브러리는 프로젝트에 존재하지 않기 때문에 다음 두 가지 방법으로 추가할 수 있다.수..
자바의 클래스 분류와 접근 범위 자바에서는 클래스와 그 안의 멤버(필드, 메서드)에 대해 접근 제한자를 붙여서 접근 권한을 설정할 수 있다. 1. 클래스 자체에 붙일 수 있는 접근 제한자접근제어자 같은 패키지 다른 패키지publicOOdefault(아무것도 안 씀)OX public 클래스는 어디서든 접근할 수 있다. 예: public class Main { ... }default 클래스는 같은 패키지 안에서만 접근할 수 있다. 예: class MyHelper { ... } 주의: 클래스 자체에는 private, protected는 쓸 수 없다.2. 클래스 안의 멤버(필드, 메서드)에 붙일 수 있는 접근 제한자접근제어자 같은 클래스 같은 패키지 다른 패키지(상속 X) 다른 패키지(상속 O)publicOOOOprotectedOOXOdef..