Tackling AI Bias: Identifying & Preventing Discrimination
13 Min read
Artificial intelligence (AI) has the potential to revolutionize numerous industries, but it is not without its pitfalls. …
Nowadays there is a variety of ways to develop an Android Application. It can be hybrid app, cross-platform or native. In this article we will make a focus on native app development approach, define pros and cons for each technology and highlight major benefits of each technology both from business and engineering standpoint
It might sound a bit weird that business can benefit from language in comparison to another, but technology can have huge impact on business and app development
Let’s figure out what are the most common issues while developing an application for business
Every business wants go get software developed as soon as possible, without loosing in performance or creating issues.
How can technology impact speed of development? A software is like an advanced essay, moving forward with this comparison, the more symbols you should put into essay - the longer it takes to write that.
Back to technologies, if developers should write more code - it’s not surprise development would take longer, if we are talking about two similar mobile applications, with same level of efforts for development. Based on that, Kotlin definitely would speed up development, even just by the fact you shouldn’t write semicolon number almost equal to number of lines in your software
When estimating, software companies usually book about 30% of estimate to make bugfixes. This number is not final and can be both lower and higher.
As a business owner, how can you reduce risk of creating additional bugs?
That consists of two components:
Read our article about How to hire the right team for your startup
Our expertise reveals that bugs can be split in several categories: logical bugs, wrong architectural solutions, technology misuse.
Logical issues and wrong solutions while setting up architecture mostly occur due to miscommunication or unclear requirements. Technology misuse is usually something you can mitigate by picking up easy and more readable language. The simpler instrument - the fewer ways there are to use it wrongly
In Android development world, one of the most popular exceptions is NullPointerException
. This is an exception which occurs, when code is expecting the variable value, but value is not present, like if you were looking for a cookie jar in your kitchen but there is no jar at all. In Java, software engineers should write huge amount of null checks using if-else
construction, increasing software complexity and decreasing readability.
Sample snippet:
Cat cat;
..
if (cat != null) {
// Do something
}
..
While in Kotlin, it’s as simple as using proper scoping function
cat?.let { /** do something*/ }
Big companies like Google and Apple publish updates on a yearly basis. New widgets, new libraries, extended abilities, machine learning integrated into the app and so on. If your mobile software should be up to date, and you want to receive the most recent upgrades and integrate with modern solutions - don’t be afraid of picking new technology. But keep in mind, that it’s might be not the best option to choose something that has been released a day ago, because there might be not enough information available about it
“How often is technology used?” This question might contain an answer to more significant one for business, “how long would it take to make some specific task?”. If language accepted by millions of software engineers it won’t be an issue for developer to find answers over the internet. As a result, business will have more predictable timelines and stable software
We will compare Java 11 that is now official for Android development with Kotlin 1.7 version (currently the latest one).
It’s worth mentioning that both languages are pretty solid for the development of Android app and business would still be able to get product developed in both. However, there are differences.
Let’s compare how hello world
looks like in each language
Java hello world
program:
public class JavaHelloWorldProgram {
public static void main(String args[]){
System.out.println("Hello World");
}
}
Kotlin hello world
program:
fun main(args: Array<String>) {
println("Hello, World!")
}
You may wonder: why simple hello world
in one case contains class and in other doesn’t? The thing is, out of box,
though Kotlin is object-oriented language, it still supports functional style. As a software engineer you can always just make a simple main
function in your .kt
file
and run it, without any classes. That means, you can write standalone scripts in Kotlin
That's why the most of the developers don’t like Java. In Kotlin you shouldn’t put semicolons, as you mandatory do in Java System.out.println("Hello World");
Assuming Java and Kotlin are both strictly typed languages
Typical Java variable looks like
String s = "Hi";
And Kotlin variable definition is something like
val s = "Hi"
Why didn’t we define variable type for Kotlin? Well, that’s easy to explain, the trick is that Kotlin compiler can understand the type based off of the assigned value’s type
Intermediate summary: Kotlin syntax looks way more laconic
In Kotlin function looks like the following:
fun functionName(args: Array<String>): String { .. }
Where functionName is name of your function, args are arguments and :String is the way developer can define return type. Other way is to skip return type, using next syntax
fun functionName(args: Array<String>) = "Hello"
That should work because Kotlin compiler would know which type to return when the app is going to be compiled
In Java, function would look like:
String functionName(String args[]) { ... }
As a developer you can’t use equality syntax without return type in Java, but basically the syntax is pretty much same.
Kotlin also has extended abilities like infix
or inline
functions which can affect compile time, but we will leave it out of scope for this article and focus on basic things
In Java, it’s as just putting static in proper place. For function you should put it right after visibility modifier
public static String someFunction() { .. }
Things are becoming more interesting when it’s a case to develop app in Kotlin - developers should use construction,
known as companion object
- special block where static variables and functions should be defined
Example:
class SomeClass {
companion object {
fun someFunction { .. }
}
}
*In Java class is not mentioned since Java code would not compile out of class at all
Kotlin provides a lot of advanced abilities, like null-safety
, scope functions (let, run, with, apply)
, sealed and data classes and other syntax abilities.
Why do you need them?
?.
come handy when you need to handle possible null values which is one of the most popular exceptions leading to the app crash.apply { } function
equals/hashCode
autogenerated and toString
functions defined, based on propertiesBoth languages are pretty solid for the development of Android app and business would still be able to get product
developed in both. Kotlin provides a lot of advanced abilities, like null-safety
, scope functions (let, run, with, apply)
, sealed and data classes and other syntax abilities
Our recommendation would be to choose Kotlin for new developments or to refactor existing Java code
P.S Always test your app before releasing to the customers. Check out our Software Testing Services
Reach us out through the contact form if you have any questions!
13 Min read
Artificial intelligence (AI) has the potential to revolutionize numerous industries, but it is not without its pitfalls. …
12 Min read
Quantum computing and artificial intelligence (AI) are two of the most revolutionary technological domains that are …
Looking for a solid engineering expertise who can make your product live? We are ready to help you!
Get in Touch