일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c++
- BFS
- 분할 정복
- tensorflow
- 회고록
- object detection
- lazy propagation
- 2023
- pytorch
- Overfitting
- 너비 우선 탐색
- 문자열
- 크루스칼
- 백트래킹
- 세그먼트 트리
- DP
- 미래는_현재와_과거로
- 알고리즘
- 가끔은_말로
- 다익스트라
- 플로이드 와샬
- back propagation
- dfs
- dropout
- 가끔은 말로
- 조합론
- 이분 탐색
- 우선 순위 큐
- 자바스크립트
- NEXT
- Today
- Total
Doby's Lab
[자바/Java] "Hello World!", 시작하자마자 Class? 본문
1. 개발 환경 구축 (VSC)
자바는 IDE(개발 통합 환경)을 뭘로 쓰려나 싶어서 찾아보다가
Visual Studio에서는 자바를 지원하지 않았고,
이클립스라는 IDE나 Visual Studio Code에서 사용할 수 있길래
아무래도 나에게는 VSC는 무언갈 개발하고 만들어낼 수 있다는 인식과
Visual Studio나 이클립스 같은 IDE는 공부를 하기에 좋다는 스스로의 인식이 있고,
자바스크립트를 공부할 때 VSC를 사용했었기 때문에 VSC를 택했다.
하지만, VSC에서 자바 개발 환경을 구축해내는 것은 좀 까다로웠다.
JDK(Java Development Kit) 설치, 환경변수 추가, setting.json에서의 설정 등
나 또한 여러 웹 자료들을 보고 따라 했기 때문에
추후에 다룰 일이 생기면 다루어 보겠다.
[구축을 위해 참고했던 사이트]
vscode 에 java 개발 환경 만들기
C / C++ 개발이 주 특기인데 java 로 프로젝트를 진행하란다. 기본적으로 사용하는 함수들이 모두 다르고 여러모로 낯설다. visual studio IDE (이하 vc )를 기본 에디터로 사용했는데 이클립스는 너무 낯
soolper.tistory.com
VSCODE에서 JAVA 개발 환경 세팅하기
개인 기록용입니다:) 정확한 세팅을 위해서는 공인된 정보를 참고하시길 추천 드립니다. JAVA를 배운다기보다 프로그래밍원리 자체를 공부하고 피드백 받을 수 있는 기회가 있어 후다닥 설정했
kangdanne.tistory.com
2. "Hello World" 출력
구축을 끝내고 난 뒤에 확인차 모든 언어의 시작 "Hello World"를 출력해보려 했다.
아무 지식이 없었기에 예시 코드를 따라 쳐 보았다.
따라 쳐 보고 난 뒤에는 많이 당황스러웠다.
기존에 사용하던 베이스 언어, C++은
#include <iostream>
int main(){
cout << "Hello World!";
return 0;
}
이런 형태로 출력을 해왔고, 자바스크립트를 배울 때도 다른 점이 존재는 하지만
헷갈릴 정도로 생각을 하게 하진 않았었기 때문이다.
하지만 Java는
처음부터 class를 사용하거나 class의 이름명이 파일명과 같지 않다면 실행이 되지 않는 점에서 혼란을 가져왔다.
public class Helloworld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
단순히 문장 하나 출력하는 건데 왜 Class까지 사용되었는지는 궁금하게 되었고,
이와 더불어 항상 알고리즘 문제를 풀다 보면 Java만 실행시간의 제한을 더 제공한다.
그래서 Java가 어떻게 돌아가는 것인지 알아보았다.
3. Java 작동 원리
1. 자바는 운영체제와는 독립적인 관계이다. 즉, 운영체제가 무엇이든 상관없다.
>> 이러한 점이 웹 개발에 용이하다고 한다.
2. 그리고 자바를 실행하기 위해 자바 가상 머신을 거치는데 이 때문에 실행시간이 다른 언어에 비해 느리다.
자바는 확장자명이 (.java)인 자바 클래스 파일에서 자바 컴파일러(javac)를 통해 확장자명이 (.class)인 자바 바이트 코드로 컴파일된다. 그리고, 이 파일을 런타임 환경의 클래스 로더로 가져가서 자바 가상 머신을 실행시킨다. 실행시키기 위한 과정은 더 디테일하게 들어가야 하지만 1차적으로 이해를 한 다음에 더 디테일하게 다루어야 할 거 같다.
>> 아무래도 이런 설명을 통해 java가 class를 기반으로 돌아가는 언어임을 유추할 수 있었다.
3. 자바는 클래스를 기반으로 돌아가는 언어이다. (아직 정확한 근거는 없다.)
하지만, 다음과 같은 실험을 해보았다. 아래 코드는 정상적으로 작동하지만
public class Helloworld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
아래 코드와 같이 "Hello World 2"나 "Hello World 3"를 출력하는 코드는
오류를 가져온다.
public class Helloworld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
public static void main(String[] args) {
System.out.println("Hello World 2");
}
System.out.println("Hello World 3");
4. 클래스명과 파일명이 같아야 하는가?
정확히 말하면 public class가 같아야 한다. 자바가 실행될 때 사용하는 자바 가상 머신(JVM)은 public class를 먼저 찾고,
public class가 없다면 파일명과 같은 class를 찾는다고 한다. 그다음 main 메소드를 찾아간다고 한다. 그리고, public class는 하나만 존재할 수 있다.
>> 파일명과 public class명이 같아야 한다는 정확한 근거를 적진 않았지만, public class의 이름과 파일명이 같아야 한다는 사실은 기억하고 있어야 한다.
이번 포스팅을 하면서 궁금했던 점은
- 클래스가 여러 가지인 경우는 무엇인가
- 출력은 예시를 통해 알아보았지만 입력은 어떻게 하는가
앞으로의 포스팅을 통해 궁금한 점을 해결하려 한다.
기존에 C++을 사용했고, 이클립스가 아닌 VSC를 사용하려다 보니 어려운 점이 많다.
콘솔과 터미널에 대한 개념도 모호하고, 자바의 기초를 더 들여다보아야 할 거 같다.