본문 바로가기

Programming/Programming Language

Comparing Java and Kotlin with pros and cons, 자바와 코틀린 장단점 비교

Comparing Java and Kotlin with pros and cons, 자바와 코틀린 장단점 비교




Origin ( Here )

원문 ( 여기 )





What is Better Java or Kotlin  자바와 코틀린 중에 뭐가 더 나은가?



Beginners, Intermediates, or the experts all of them are in the same dilemma Java or the Kotlin? You have two colleges to enroll yourself, how would you pick one? You will weigh the advantages of both of them, also pick out the disadvantages of both, look forward to the future of both of them and results, and demand. Well, then now you know how can you know the best from Java and Kotlin. Are you an Android app development company or a developer? If yes, you might have studied it deeply and still be in the conundrum which one would client and the user would prefer and which one to adapt in the development process. Let’s start with the ancestor language Java.



 초보든, 중급자든, 전문가든 모두 자바냐 코틀린이냐 하는 딜레마가 있다. 어떻게 고를까? 장단점을 따져보고 나중을 고려해볼 것이다. 안드로이드앱 회사에 다니거나 안드로이드 개발자인가? 그렇다면, 깊게 조사해봤을테고 개발과정에 어떤게 더 클라이언트와 유저에게 좋은지 여전히 수수께끼 상태일 것이다. 자바부터 시작해보자.




Java Programming Language  자바 프로그래밍 언어

 


When the idea of developing an Android app hits your mind the immediate thought which pops up will be of Java. A huge number of Android apps are written in Java which is now gradually changing. Well, Java is an established, experienced, a reliable language with a bigger community of developers. This clearly means learning and troubleshooting issues with Java will be a lot easier. Also, the popularity level has grown and there is no full stop to it. Over years of use and dependency, Java has created a vast market for itself. Java seems to be an object-oriented programming language and attained the position of the second highest active language on the GitHub.



안드로이드 앱을 개발해야겠다는 생각이 들었을 때, 자바가 제일 먼저 떠오를 것이다. 많은 수의 안드로이드 앱은 자바로 쓰여졌고, 점차적으로 변하고 있다. 자바는 오래되어 믿을만하고 큰 개발자 커뮤니티가 있는 언어이다. 배우고 문제 찾기가 확실히 더 쉬운 것을 의미한다. 또한 인기는 계속 올라가고 있고 멈추지 않는다. 수년간의 사용에서 자바는 스스로 거대한 마켓을 만들었다. 자바는 객체지향 프로그래밍 언어이고, 깃헙에서 두번째로 가장 활동적인 언어이다.

 


Pros of Java Programming Language  자바 프로그래밍 언어의 장점

 


1) The learning curve is short and easy.


2) The Android app development process is swift than Kotlin.


3) Handling large project is easy with Accelerated assembly with Gradle.


4) It is open source basically because of the adoption of the JVM for Android.


5) Java is a preferable choice of language when it comes to developing a cross-platform app.


6) Java can really adapt with almost anything whether it be a browser window or it is a virtual machine. This will prove to be a great boon when you are working on a software update or when you want to reuse the code.


7) In a way, Android is dependent on Java as the Android SDK consists of several standard Java libraries.


8) The apps developed with java are highly compact compared with the apps developed with Kotlin. These apps are lighter and work really efficiently without any bugs and crash on the user’s device.



1) 배우기 쉽고 오래걸리지 않는다.


2) 안드로이드앱 개발 과정이 코틀린보다 빠르다.


3) 큰 프로젝트를 관리할 때 그래들을 이용해 쉽게 할 수 있다.


4) 안드로이드를 위한 JVM 이식 때문에 기본적으로 오픈소스이다.


5) 크로스플랫폼 앱에 관해서는 선호되는 언어이다.


6) 자바는 윈도우의 브라우저든 버추얼머신이든 거의 어떤 것에든 이식될 수 있다. 코드를 재사용하거나 소프트웨어 업데이트를 할 때 큰 도움이 될 것이다.


7) 안드로이드는 자바 라이브러들로 이뤄진 안드로이드 SDK의 자바에 의존하고 있다.


8) 자바로 개발된 앱들은 코틀린으로 개발된 앱에 비해서 훨씬 컴팩트하다. 훨씬 가볍고 효율적으로 버그나 디바이스와의 충돌없이 돌아간다.

 



Cons of Java Programming Language  자바 프로그래밍 언어의 단점

 


1) It needs higher memory and works slow as compared to the other programming languages.


2) It needs more coding which makes it more prone to errors and bugs.


3) Java is ancient but is not modern which means it has a certain limitation which creates some issues with the Android API design.



1) 다른 프로그래밍 언어와 비교했을 때 메모리가 많이들고 느리다.


2) 에러나 버그를 더 만들 가능성이 더 높아지게, 코드가 더 길다.


3) 자바는 오래되었고 현대적이지 않은데, 이것은 안드로이드 API 디자인에서 특정 제한으로 몇몇 이슈가 있다는 것을 의미한다.

 




Kotlin Programming Language  코틀린 프로그래밍 언어

 


It’s a language which is statistically types and designed to run on the Java virtual machine. The nice part is that it can also be compiled with the JavaScript source code or make use of the LLVM compiler infrastructure. The language is new, modern and has total support from the Google.



정적인 언어이고, 자바 버추얼 머신에서 돌아가도록 디자인 되어있다. 좋은 부분은 자바스크립트 소스코드와 함께 컴파일 될 수 있고, LLVM 컴파일러 기반을 사용한다. 새로운 현대 언어이고 구글로부터 지원받고 있다.

 


Pros of Kotlin Programming Language  코틀린 프로그래밍 언어의 장점

 


1) Received a lot of attention from the Android community and the bonus point is that it can also be used in the backend development like Spring 5.


2) Compared to Java, Kotlin is way more concise and hence the chances of errors are probably low.


3) Developers are privileged to make use of the Anko Library and currently, there are over 2000 Kotlin projects on Github.


4) If you intend to make a switch from Java to Kotlin then it is easy. The process is short and sweet, Install Kotlin Plugin, add the plugin to the Gradle build files, and then select convert. You are done. It’s this simple and easy.


5) The developers can now build cleaner APIs by including the smart extension functions.


6) Kotlin contains null in its type system. Nullability is the most common issue with the apps developed with Java and as Android basically uses null to represent the absence of value, Kotlin makes it easy by putting null directly in the type system.


7) One of the major pros of Kotlin is that it works well with Java. The developer can create new modules with Kotlin and you can rest assured that it will work well with existing Java code.



1) 안드로이드 커뮤니티에서 많은 주목을 받고있고, 스프링5 와 같은 백엔드 개발에도 사용될 수 있다.


2) 자바에 비교해서, 코틀린은 더 직관적이고 따라서 에러를 만들 확률이 적다.


3) 개발자들은 Anko 라이브러리를 활용할 권한이 있고, 깃헙에 2000개가 넘는 코틀린 프로젝트가 있다.


4) 자바에서 코틀린으로 바꾸려한다면 쉽다. 과정은 짧고 재밌는데, 코틀린 플러그인을 설치하고 그래들에 빌드 파일 추가, 변환을 선택한다. 끝이다. 간단하고 쉽다.


5) 개발자들은 똘똘한 확장 함수들을 포함하는 것으로 깨끗한 API 들을 빌드할 수 있다.


6) 코틀린은 null 을 타입시스템에 갖고 있다. Nullability (값이 없을 때 null 로 나타내는 것) 는 가장 흔한 자바와 안드로이드 개발 중 문제이다. 코틀린은 null을 직접적으로 타입 시스템에 넣어서 쉽게 만들었다.


7) 코틀린의 주요 장점 중 하나는, 자바와 같이 잘 돌아간다는 것이다. 개발자들은 코틀린으로 새로운 모듈을 만들 수 있고, 이미 있는 자바코드와 잘 돌아가는 것을 확신할 수 있다.

 



Cons of Kotlin Programming Language  코틀린 프로그래밍 언어의 단점

 

1) The compilation and auto-complete of the Android Studio run very slow compared with the apps developed with the apps developed with pure Java.


2) The compilation of Kotlin is extremely slow compared to Java.


3) The learning takes increased time as the language is comparatively new and challenging and also the language has a concise syntax.


4) The experienced Kotlin developers are very rare and hence be extra careful while choosing the tutor. Finding the right expert can be really tricky.


5) The developer community for Kotlin is really small and also the answers to all the queries are not available on the ground of the language is new.



1) 안드로이드스튜디오의 컴파일과 자동완성기능이, 순수 자바로 개발된 앱들에 비교해서 매우 느리다.


2) 자바에 비해 컴파일이 엄청나게 느리다.


3) 간결한 문법을 갖고 있어서, 배우는 시간이 오래걸리고 상대적으로 어렵다.


4) 경험많은 코틀린 개발자는 매우 적어서, 튜터를 정할 때 신장해야 한다. 적합한 전문가를 찾기가 어렵다.


5) 코틀린 개발자 커뮤니티는 매우 작고, 그래서 모든 질문들에 답변이 없는 그냥 새로운 언어다.

 



The conclusion :  결론

 


We learned the ups and downs of both the languages and it seems like picking one is yet so difficult. The final conclusion is if you are a newbie trying to put your baby steps in the Android app development, Java would be easy to get started with. If you are already an expert and have not left any page unturned of this field, I guess its high time you should start learning Kotlin and working on it. The type of project and the client’s requirements are also crucial factors in choosing the language.



 이리저리 배워봤고, 여전히 고르기 어려울 것이다. 최종 결론으로, 완전 처음 안드로이드 앱 개발을 한다면, 자바가 시작하기 편할 것이다. 하지만 이미 전문가라면 코틀린을 배우고 일해볼 순서라고 생각한다. 프로젝트의 타입과 클라이언트들의 요구사항에 맞춰 언어를 고르는게 중요하다.





Something else you might like...?





2019/02/08 - [Programming/Software Architecture] - How to refactoring, 리팩토링 하는 방법, 코드 리팩토링이란? What is code refactoring? / Java/c++/clean code/oop

2019/01/30 - [Programming/Software Architecture] - What is Object Oriented Design/Artchitecture? 객체지향 디자인/설계란? java,c++,softwareArchitecture,designPattern

2019/01/29 - [Programming/Programming Language] - 클린코딩/더 나은 코딩을 하는 10가지 방법, 10 Tips for clean code/ better code/ quality code.

2018/12/26 - [Programming/Software Architecture] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍 (1)

2018/12/28 - [Programming/Software Architecture] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍 - (#9, Tell, Don't Ask)



2019/02/18 - [Algorithm/Leet Code] - LeetCode #412 FizzBuzz. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접

2019/02/17 - [Algorithm/Leet Code] - LeetCode #415 AddStrings. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접

2019/02/15 - [Algorithm/Leet Code] - LeetCode #290 WordPattern. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접

2019/02/14 - [Algorithm/Leet Code] - LeetCode #283 MoveZeroes. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접


2019/02/19 - [Life/Health care] - Lysine 라이신 usage/side effects/dosage 효과/효능/부작용/성인,소아 용법, 복용법

2019/02/10 - [Life/Health care] - 고지방식/키토식/키토제닉/hflc 다이어트 식단, What is the Keto diet/High fat low carb/hflc/ketogenic diet, 효과/효능/부작용/방법/effect/side effect

2019/01/28 - [Life/Health care] - Rogaine 로게인(Minoxidil, 미녹시딜, 마이녹실) usage/sideEffects/dosage 효능/부작용/사용법

2019/02/07 - [Life/Health care] - CoQ10 코큐텐 Coenzyme Q10 usage/side effects/dosage 효능/효과/부작용/성인,소아 용법

2019/02/16 - [Life/Health care] - Finasteride 피나스테라이드,탈모약 usage/side effects/dosage 효능/부작용/효과/sexual effect/두타스테라이드/프로페시아/propecia/finpecia/카피약/copy drug/hair loss