[Java] Consideration of options for native application implementation (during writing)

2 minute read

❶ 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. Assumption

The programming languages I have experienced so far are Ruby, Python, JavaScript, and the frameworks are Rails, Djnago, etc. Originally, I changed jobs from a non-science department to an engineer, so the basics are pretty good. I’ve been enthusiastic about overcoming many sites. This time I decided to post an article to deepen my knowledge.

❷ Difference between web app and native app

1. Web application

  • An application that runs on a web browser (Chrome, Safari, Firefox, etc.).
  • Operates independently of OS. Therefore, development for each platform is unnecessary.
  • Works in an online environment.
  • No need to download.
  • Wide channels are expected due to inflow of search, SNS, direct (direct URL hit).

  • By implementing PWA (Progressive Web Application), offline operation, local notification, and push notification can be partially supported.

2. Native App

  • Application that runs on each terminal (native environment) such as smartphone and tablet.
  • Depends on the OS. Development and adjustment are required for each platform.
  • High speed operation.
  • Push notification and local notification are possible.
  • Using the billing system, you get 30% commission.
  • Works in offline environment. (Except where communication is required)
  • Need to download to the terminal.
  • Channel is only App Market (App Store/Google Play).
  • Releases and updates are reviewed and take time. (24-48h)

❸ Candidates to implement (— Writing —)

For web apps

1. JavaScript (React/Next) + Ruby(Rails)

  • JavaScript (React/Next) for the front end and Ruby (Rails) for the back end.
  • Considering the deployment to native apps, React is good for JavaScript library instead of Vue.
  • Ruby has a lot of libraries (gem) and information when specializing in Web applications.

2. JavaScript (React/Next) + Python(Django)

  • JavaScript (React/Next) for the front end and Python (Django) for the back end.
  • Considering the deployment to native apps, React is good for JavaScript library instead of Vue.
  • Python is especially good when the need for numerical calculation is expected.

For native apps

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

  • Development suitable for OS is possible.
  • Development and management are required for each OS, so it is difficult.

4. JavaScript(React Native) + Python(Django)

  • Places where a bridge is needed on the native side and the JavaScript side are troublesome.
  • It can be made independent of OS (in most cases), which makes development and management easier.
  • With Hot Relod, the style is fixed quickly.
  • With Hot Code Push, minor corrections can be made without application.
  • As for the back end, making the API in Python makes it easier to deploy the Web.

Web application + native application

5. Flutter

  • A cross-platform framework that supports from web apps to native apps.
  • Because there is no barrier between web application and native application, it seems that development and management can be done simply and quickly.
  • With Hot Relod, the style is fixed quickly.