JAR & WAR java 기반의 application의 배포 형태이다. JAVA JAR TOOL을 이용하여 압축한 압축 파일이다. ( 즉, 둘이 같은 압축 형태 ) JAR와 WAR는 사용 목적이 다르다.
JAR (Java ARchive) path 정보를 유지한 상태로 압축한다. 자바 클래스 파일과, 각 클래스들이 사용하는 관련 리소스파일 및 메타데이터을 압축한 파일이다. 실제로는 ZIP 파일 포맷으로 압축된 파일이다.
WAR (Web application ARchive) 웹 어플리케이션을 어떻게 설정할 지에 대한 정의가 있는 web.xml 파일이 있다. 자바 서버 페이지, 자바 서블릿, 자바 클래스, XML, 파일, 태그 라이브러리, 정적 웹페이지(HTML 관련 파일) 및 웹 application을 구성할 때 필요한 자원을 압축한 jar 파일이다.
JAR , WAR 압축 구조
jar는 주로 java 라이브러리나 excutable jar 를 위해서, war는 was 실행시 웹서비스를 위한 파일로 사용.
AI(인공지능) - General AI : 일반적인 인공지능 사람처럼 다재다능한 인공지능을 말함 - narrow AI : 단 한개만 할줄 알고, 집중하는 범위가 적은것 예) 페이스북 얼굴인식, 알파고
머신러닝 : AI 를 교육시키기 위한것 - Supervised Learning : 다양한 라벨을 정해주면 확률을 통하여 판단하도록 함 - Unsupervised Learning : 인간이 데이터를 주입하지 않음, 기계로 하여금 스스로 알아내게 만듬
딥러닝 : 머신러닝을 달성하기 위한 방법 인간의 뇌처럼 작동하는 알고리즘. 인텐시프한 프로세스라서 프로세싱 파워가 많이 필요함. 딥러닝은 구글, 테슬라에서 많이 사용함, 엄청난 규모의 데이터와 프로세싱 파워를 위한 자본이 있음 파이썬을 통하여 텐서플로우를 살펴보도록, 텐서플로우는 ai를 위한 프레임워크로 이미 커뮤니티가 많이 만들어둠.
자동으로 로컬에 설치된 eclipse와 sts를 찾아주는데 "Install / Update" 버튼을 클릭하면 설치 완료된다.
eclipse나 sts폴더로 가면 lombok.jar 파일이 생성되어 있을것이며, ini 환경파일에 아래와 같은 코드가 추가된다.
2. 사용하기 간단하게 어노테이션만 추가하면 된다. @Data 어노테이션만 추가했는데, Outline에 getter/setter/toString 메소드가 보인다.
3. 사용시 주의점
@Data는 지양 하자 @Data는 @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor을 한번에 사용하는 강력한 어노테이션 입니다. 강력한 어노테이션인 만큼 그에 따른 부작용도 많다고 생각합니다.
무분별한 Setter 남용 위에서 언급했듯이 @Data를 사용하면 자동으로 Setter를 지원하게 됩니다. 그로 인해서 생기는 문제점들이 있습니다. 간단하게 정리하면 Setter는 그 의도가 분명하지 않고 객체를 언제든지 변경할 수 있는 상태가 되어서 객체의 안전성이 보장받기 힘듭니다. 예를들어 email의 변경 기능이 제공 되지 않는다고 가정한다면 email 관련된 setter도 제공되지 않아야 안전합니다. 단순 안전함을 넘어서 해당 객체가 자기 자신을 가장 잘 표현하는 구조 즉 email의 변경 포인트를 제공하지 않음으로써 email 변경 기능이 없다는 것을 표현한다고 생각합니다.
ToString으로 인한 양방향 연관관계시 순환 참조 문제 두 객체가 서로 참조할 경우 ToString을 호출하면 무한 순환 참조가 발생합니다. JPA를 사용하다 보면 객체를 Json으로 직렬화 하는 가정에서 발생하는 문제와 동일한 이유입니다. 이 처럼 무분별하게 @Data를 사용하게 되면 이러한 문제를 만나기 쉽습니다.
4. 결론 많은 개발자 환경과 빌드에 해당 라이브러리를 추가하는 작업을 별도로 해야하고, 명시적이지 않게 자동으로 무언가를 해준다는것 자체도 별로 맘에 들지 않는다! 마지막으로 이클립스에서 자동으로 getter/setter/toString 정도는 잘 만들어 주자나!!