[JAVA] Consideration of options for implementing native apps (in writing)

❶ Introduction

1. Summary

A web engineer with two and a half years of work experience will consider which language to use when implementing a native app for the first time.

2. Premise

The programming languages I have experienced so far are Ruby / Python / JavaScript, and the frameworks are Rails / Djnago. Originally, I changed my job from non-science to engineer, so the basics are pretty good. I have overcome many sites with enthusiasm. This time I decided to post an article to deepen my knowledge.

❷ Differences between web apps and native apps

1. Web app

--Applications that run on web browsers (Chrome, Safari, Firefox, etc.). --Operates independently of the OS. Therefore, development for each platform is unnecessary. --Work in an online environment. --No hassle of downloading. --The influx of search, SNS, and direct (direct URL) is expected, and the channel is wide.

2. Native app

--Applications that run on each device (native environment) such as smartphones and tablets. --Depends on the OS. Needs development and adjustment for each platform. --Fast operation. --Push notifications and local notifications are possible. --If you use the billing system, the fee is 30%. --It works even in an offline environment. (Except where communication is required) --Need to download to your device. --Channel is only App Market (App Store / Google Play). --Releases and updates are subject to review and take time. (24-48h)

❸ Candidates to implement (--- writing ---)

For web apps

  1. JavaScript(React/Next) + Ruby(Rails) --The front end is JavaScript (React / Next), and the back end is Ruby (Rails). ――When considering the deployment to native applications, React is good (?) For the JavaScript library instead of Vue. ――When specializing in Web applications, Ruby has a lot of libraries (gems) and information.

  2. JavaScript(React/Next) + Python(Django) --The front end is JavaScript (React / Next), and the back end is Python (Django). ――When considering the deployment to native applications, React is good (?) For the JavaScript library instead of Vue. --Python is especially good when the need for numerical calculations is expected.

For native apps

3. Swift for iOS, Java (Kotlin) for Android

--Development suitable for the OS is possible. ――It's difficult because development and management are required for each OS.

  1. JavaScript(React Native) + Python(Django) --It's a hassle where you need a bridge on the native side and the JavaScript side. --Since it can be created independently of the OS (mostly), development and management will be easier. --Hot Relod allows you to fix styles quickly. --Hot Code Push allows you to make minor corrections without application. --For the back end, creating an API in Python will make it easier to deploy the Web.

For web apps + native apps

  1. Flutter --A cross-platform framework that supports everything from web apps to native apps. ――Since there are no barriers between web apps and native apps, it seems that development and management can be done simply and quickly. --Hot Relod allows you to fix styles quickly.

Recommended Posts

Consideration of options for implementing native apps (in writing)
[Socket communication (Java)] Impressions of implementing Socket communication in practice for the first time
The story of writing Java in Emacs
Specify Java / Kotlin compile-time options for Android apps
Implementation of digit grouping in flea market apps
Create a native extension of Ruby in Rust