Python 및 Java의 라이브러리 및 프레임워크 기능 비교
Python vs Java : Library and Framework
🔔 Introduction
📌 Python vs Java : 대표적인 프로그래밍 언어
🔔 1. Application Program Framework
📌 Django vs Spring
- Django는 Python의 대표적인 웹 및 데스크톱 애플리케이션의 프레임워크입니다.
Django를 활용하는 대표적인 기업은 Youtube, Instagram, Dropbox 등이 있습니다.- Spring은 Java의 대표적인 웹 및 데스크톱 애플리케이션의 프레임워크입니다.
우리나라의 전반적인 정부 행정 시스템은 Spring으로 구축되었으며 SI 기업에서 주로 사용됩니다.
📌 Flask vs Spark
- Flask는 Python의 애플리케이션 프레임워크로 간결성과 유연성이 특징입니다.
Flask를 활용하는 대표적인 기업은 Netflix, LinkedIn, Pinterest 등이 있습니다.- Apache Spark는 Java의 빅데이터 처리가 필요한 애플리케이션 프레임워크입니다.
Spark를 활용하는 대표적인 기업은 Facebook, Amazon, Uber 등이 있습니다.
🔔 2. Data Science & Machine Learning
📌 Numpy vs ND4J
- Numpy는 다차원 배열 연산 기능을 제공하는 Python의 라이브러리입니다.
Numpy를 활용하는 대표적인 기업 등은 Google, Intel, NASA 등이 있습니다.
Numpy는 또한 필자가 개발중인 싱크홀(공동) 자동 분석 AI 모델 개발에도 이용중입니다.- ND4J(N-Dimensional Arrays for Java)는 Numpy와 유사한 Java의 라이브러리입니다.
ND4J를 활용하는 대표적인 기업은 IBM 등이며 이는 아래 Deeplearning4j 시스템의 일부입니다.
📌 Pandas vs Tablesaw
- Pandas는 데이터 분석 및 가공을 위한 목적의 Python 라이브러리입니다.
Pandas를 활용하는 대표적인 기업은 금융회사인 J.P.Morgan, Uber 등입니다.
Pandas는 또한 필자의 Toy-Projects 중 하나인 주식 종가 조회 프로그램 개발에도 사용되었습니다.- Tablesaw는 Pandas와 유사한 데이터 분석 기능을 제공하는 Java의 라이브러리입니다.
Tablewas를 활용하는 대표적인 기업은 Netflix 등이며 데이터를 이용한 개발에 사용됩니다.
📌 TensorFlow vs DL4J
- Tensorflow는 Google이 개발한 Python의 머신 러닝 프레임워크입니다.
Tensorflow를 활용하는 대표적인 기업은 Twitter, Airbnb, DeepMind 등입니다.
Tensorflow는 또한 필자가 개발중인 싱크홀(공동) 자동 분석 AI 모델 개발에도 이용중입니다.- DL4J(Deeplearning4j)는 JVM (Java Vertual Machine) 기반의 딥러닝 프레임워크입니다.
Deeplearning4j는 사실상 Eclipse의 일부이며 Microsoft Azure의 AI 서비스에서도 지원됩니다.
🔔 3. DataBase & ORM (객체지향적 DB 관리 기능)
📌 SQL Alchemy vs Hibernate
- SQL Alchemy는 Python의 라이브러리이며 DBMS과의 호환성을 제공합니다.
SQL Alchemy는 SQL 쿼리를 직접 작성하지 않아도 DB를 관리할 수 있는 기능을 제공합니다.
SQL Alchemy를 활용하는 대표적인 기업은 Dropbox, Reddit, Yelp (맛집 추천 어플) 등입니다.- Hibernate는 Spring에서 DB 서버와의 연결 시 필요한 Java의 프레임워크입니다.
Hibernate를 활용하는 대표적인 기업은 LinkedIn, Dell, IBM 등이 있습니다.
🔔 4. Networking
📌 Requests vs OkHttp
- Requests는 Python의 라이브러리이며 HTTP 요청을 쉽게 보낼 수 있어 웹 크롤링 시 사용됩니다.
Requests를 활용하는 대표적인 기업은 Google, Facebook, AWS (Amazon Web Service) 등입니다.
Requests는 또한 필자의 Toy-Projects 중 하나인 주식 종가 조회 프로그램 개발에도 사용되었습니다.- OkHttp는 주로 Android 애플리케이션 개발 중 HTTP 통신에 사용되는 Java의 라이브러리입니다.
OkHttp의 특징은 네트워크 연결이 종료된 상황에서도 자동으로 네트워크 연결을 요청하는 기능입니다.
OkHttp는 비즈니스용 제품 서비스 기업인 Square에서 개발되었습니다.
🔔 5. GUI (Graphical User Interface : SW program)
📌 Tkinter vs Swing
- Tkinter는 Python의 표준 GUI 라이브러리입니다.
- Swing은 Java의 GUI 라이브러리이며 MVC (Model-View-Controller) 디자인 패턴을 기반합니다.
- 이들 라이브러리를 활용하는 기업을 특정하기는 어려우나 SW program 제작에 활발히 활용됩니다.
🔔 6. Image Processing
📌 Pillow vs BufferedImage
- Pillow (PIL Fork)는 이미지 가공 목적의 Python 라이브러리입니다.
Pillow는 이미지 가공, 전처리(processing), 증강(augmentation) 등에 사용됩니다.- Buffered Image는 이미지에 저수준(픽셀 단위)의 접근을 가능하게 하는 하나의 Java class입니다.
Buffered Image는 고객의 신분증 사본, 전자 서명 등의 이미지 처리에 사용됩니다.
📌 OpenCV Python vs Java Binding
- OpenCV는 C++ 언어로부터 개발되었으며 Python, Java 등의 언어로 라이브러리가 제공됩니다.
Python의 OpenCV는 이미지 및 동영상 데이터의 처리 및 분석 기능을 제공합니다.
Python의 OpenCV의 사용 사례는 얼굴 인식, 이미지 필터링 등이 있습니다.
이는 Google 뿐만 아니라 필자가 개발중인 싱크홀(공동) 자동 분석 AI 모델에도 이용중입니다.- Java의 OpenCV 역시 좋은 이미지 및 동영상 데이터 처리 도구입니다.
Java의 OpenCV는 안드로이드 및 데스크톱 애플리케이션 프로그램 개발에 활발히 사용됩니다.
🔔 7. Video Processing
📌 MoviePy vs Xuggler
- MoviePy는 각종 동영상 편집 기능을 제공하는 Python의 라이브러리입니다.
- Xuggler는 MoviePy와 비슷한 Java의 라이브러리였지만 현재는 개발이 중단되었습니다.
- 따라서 Java에서 동영상 처리를 하기 위해서는 JavaCV 또는 JCodec 등의 사용이 권장됩니다.
- 그런데 이들 라이브러리는 결국 FFmpeg라는 도구를 기반으로 합니다.
- FFmpeg는 미디어 포맷 변환, 비디오 편집, 스트리밍, 코덱 변환 등 다양한 기능을 제공합니다.
- FFmpeg는 또한 FFplay(미디어 재생), FFprobe(미디어 정보 분석)과 함께 기능을 지원합니다.
🔔 8. Graphic & Animation Processing
📌 Pygame vs Processing
- Pygame은 가벼운 미디어 게임 개발 기능을 제공하는 Python의 라이브러리입니다.
Pygame은 2D 게임 개발 도구로 SDL (Simple DirectMedia Layer) 라이브러리를 기반으로 합니다.
Pygame은 보통 게임 개발 입문자들의 교육용으로 사용됩니다.- Processing은 애니메이션, 비주얼 아트 등 예술적인 미디어 제작을 위한 도구입니다.
Processing은 그래서 기업보다는 교육자, 예술가, 연구 기관 등에서 사용됩니다.
Processing은 Java 기반 도구이며 Processing IDE 등에서 사용되는 개별 프로그래밍 언어입니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.