source

안드로이드 앱이 C/C++로 작성되어서는 안 되는 이유는 "단순히 C/C++의 프로그램을 선호하기 때문"입니다.

gigabyte 2022. 11. 18. 21:17
반응형

안드로이드 앱이 C/C++로 작성되어서는 안 되는 이유는 "단순히 C/C++의 프로그램을 선호하기 때문"입니다.

업데이트됨(명료성 및 모호성 감소):

안드로이드 앱을 만지작거리기 시작합니다.NDK를 사용하여 C++로 작성하려고 했는데(C++에 대한 경험이 많고 Java보다 더 좋기 때문에) Android NDK 페이지에서 다음과 같은 것을 발견했습니다.

NDK는 앱에 필수적인 경우에만 사용해야 합니다. 단순히 C/C++로 프로그래밍하는 것을 선호하기 때문에 사용하지 마십시오.

그 일에 맞는 언어를 사용해야 한다는 인상을 받았어요.안드로이드 개발에 C/C++를 사용하지 말 것을 강력히 권고하는 이유를 설명해 주시겠습니까?


오리지널:

모바일 앱, 특히 현재 사용하고 있는 폰의 OS인 Android를 만지작거리기 시작할 예정인데, 앱을 C++(혹은 코어, 그 후 자바)로 쓸 수 있는지 궁금했습니다.

어느 정도 배경은 컴퓨터 공학 전공으로 C++ 3과목(인트로, 중급, OOP, 봄에 STL 1과목(중급)을 수강하고 있습니다.그래서 자바보다 C++가 더 편하고 선호합니다.Android NDK 페이지에서 다음과 같은 것을 발견했습니다.

일반적으로 Android에서 네이티브 코드를 사용해도 성능이 크게 향상되지는 않지만 항상 앱의 복잡성이 증가합니다.일반적으로 NDK는 앱에 필수적인 경우에만 사용해야 합니다. 단순히 C/C++로 프로그래밍하는 것을 선호하기 때문에 사용하지 마십시오.

  • 그 일에 맞는 언어뿐만 아니라 잘 아는 언어도 사용해야 한다는 생각이 들었습니다.
  • 애플리케이션을 iOS와 같은 C++를 지원하지만 Java는 지원하지 않는 다른 모바일 플랫폼에 포팅하고 싶을 수 있습니다.
  • Java는 고급 언어이기 때문에 개발이 빨라질 것입니다만, 거의 모든 것을 다시 배워야 하기 때문에 개발이 늦어질 것 같습니다(그 언어에 관한 수업은 1개밖에 수강하지 않았기 때문에).

어떤 조언이라도 해주시면 감사하겠습니다.

ps: 이 문제에 대한 답변의 대부분은 몇 년 전 것으로, Android 2.3 이후에서의 완전한 네이티브 앱 개발을 가능하게 하는 NDK에 대해 언급하는 폴로업 답변은 거의 없습니다.

이렇게 생각해 보세요.Java SDK를 사용하여 개발자가 사용할 수 있는 API를 100% 활용하는 완전한 작동 애플리케이션을 구축할 수 있습니다.(API 관점에서) SDK에서는 할 수 없는 NDK에서는 할 수 있는 일이 없습니다.NDK에서는 퍼포먼스가 향상됩니다.

이제 거꾸로 생각해 보세요.응용 프로그램을 NDK에서 100% 작성하도록 선택해도 완전한 기능을 갖춘 응용 프로그램을 작성할 수 있지만 액세스할 수 있는 프레임워크 API의 수에 제한이 있습니다.모든 Android 프레임워크에 네이티브 계층에서 액세스할 수 있는 것은 아닙니다.대부분의 API는 Java 뿐입니다.그렇다고 해서 필요한 모든 API를 NDK에서 사용할 수 있는 것은 아니지만, 모든 API 근처에 있는 API가 노출되어 있는 것은 아닙니다.

또한 NDK는 배포 크기를 확장하는 플랫폼 고유의 코드를 도입합니다.지원하는 모든 디바이스 아키텍처에 대해 네이티브 코드를 .so 파일(armv5, armv7, x86용)에 내장해야 합니다.이 파일들은 모두 같은 APK에 패키지되어 있습니다.애플리케이션을 배포할 때 각 아키텍처에 대해 별도의 APK를 구축해야 하는 작업을 수행하지 않는 한 실행 가능한 코드가 복제되어 크기가 3배(즉, "팻 바이너리")가 됩니다.따라서 APK의 크기를 크게 늘리고 싶지 않으면 도입 프로세스가 좀 더 복잡해집니다.

다시 한 번 말하지만, 이것들 중 어느 것도 당신이 선택한 것을 금지하는 것은 아니지만, 왜 구글은 왜 자바가 당신의 코드의 대부분에 대해 "우선되는" 방법이고 가장 저항이 적은 방법이라고 설명하는지 지적합니다.나는 그것이 왜 그 문서가 그대로 표현되었는지를 밝혀주길 바란다.

만약 당신이 당신의 삶에서 하나의 앱만을 개발하고자 한다면, NDK를 사용하세요.

만약 당신이 일생 동안 두 개 이상의 애플리케이션을 개발할 목적으로 Android 개발을 배우고 싶다면, 그리고 그것들을 모두 적절하게 지원할 수 있기를 원한다면, 당신은 장기적으로 Java를 배우고 대신 Android의 Java SDK를 사용하면 더 잘 할 수 있을 것이다.

The programmers at King use C++ for their game logic. And they seem to be doing fine judging by their turnover.

In my experience, C++ is for problem solvers and Java is for problem avoiders. I love either language, but C++ is quite rewarding when you write good code. However, it may just take several moments of wizardry to get there.

You could recommend C++ for Data scientists as well, who would normally get their job done by, say, Python or R. C++ can do the same with as good or not better performance, but it just takes being a genius in the language. That is why I'd never not recommend C++ to the one that wants to do it - I'd just give a heads up to the treat that they're in for.

I found this interesting article from: http://betanews.com/2014/07/22/why-c-is-the-perfect-choice-for-modern-app-development/

C++ was built specifically for platform independence and as such is found on every single operating system in existence. Your typical mobile user may know that Android apps are written Java and iOS apps in Objective-C, but what many don’t know is that there is more C/C++ code in memory on your devices than anything else. C/C++ drives much of the technology of small devices (like the kernel, which interacts with the hardware, as well as typical run time libraries) and the telecommunications networks that enable these devices. More importantly for a development team, is that there are C/C++ interfaces and libraries for anything you need to do on any device and platform. The Android NDK toolset is a great example of full C/C++ support that was added originally for game development teams to enable them to get the best possible performance out of the device by avoiding Java and the Android Java runtime Dalvik, the virtual machine on which Android Java code is executed on. It has been regularly improved to enable every Android service.

I would say use java for main app. But if you have some c++ code you need to port or some library you need that is efficiently implemented in c++, then use ndk for those bits

일반적인 Android 개발에는 C++를 사용하지 않을 이유가 없습니다.C++에서 작업한 경험이 풍부하고 윈도 등의 복잡한 OS를 사용한 경험이 있다면 안드로이드를 빠르게 파악할 수 있고 다른 OS만큼 복잡하지 않습니다.Java를 배우거나 배우지 않고 작업하는 것은 더 힘들고 복잡합니다.!

가장 중요한 고려사항은 컴파일된 Java 코드가 모든 안드로이드 디바이스에서 변경되지 않고 실행된다는 것입니다. 반면 네이티브 코드는 모든 타깃 플랫폼에 대해 컴파일되어야 합니다.

Java와 Android의 일반적인 목적은 앱이 모두 Java는 아니더라도 대부분을 쓰고 다른 옵션이 없을 때만 네이티브를 사용하는 것입니다.이 앱의 작성에 관한 모든 것은 자바에서 작성하는데 도움이 됩니다.

Java로 작성하면 네이티브와 Java 세계를 연결하는 데 많은 번거로움을 덜 수 있습니다.

또한, 만약 당신이 자바를 배운다면 당신은 큰 도움이 될 것이다.Android 앱이 더 나을 뿐만 아니라, OOO에 대해 상당히 다른 접근법에 노출되어 더 나은 프로그래머가 될 것입니다.

게다가 Java로 작성하면, 많은 시큐러티 리스크를 회피할 수 있습니다.

내 생각에 이것은 쉬운 일이다. 자바 사용.

언급URL : https://stackoverflow.com/questions/13773686/why-shouldnt-an-android-app-be-written-in-c-c-because-you-simply-prefer-to-p

반응형