Posts Tagged ‘software development’
We see this “Is Java out of business?” question pop up year after year. They say that Java is the least feature-rich language of the popular languages on the JVM and the slowest to move on new features in the last decade. There are also people who believe that because so many new JVM languages are being invented is proof that the Java language is lacking and that Java is no longer meeting the needs of many developers. And yet, by all external markers, Java is alive, well, and growing.
Here are several proofs for it:
1. TIOBE ranked Java as its top language of 2015 currently shows it enjoying 5% growth in use since 2014, more than any other programming language.
2. RedMonk has recently published the latest edition of its bi-annual list of the top programming languages. Compiled with the help of data obtained from GitHub and StackOverflow, this list tells us about the usage and discussion of a language on the web. Just like the previous years Java is among the top of the programming languages.
3. Further, the PYPL Index, which ranks languages based on how often language tutorials are searched on Google, shows Java clearly out in front with 23.9% of the total search volume.
Since Java first appeared it has gained enormous popularity. Its rapid ascension and wide acceptance can be traced to its design and programming features, particularly in its promise that you can write a program once, and run it anywhere. Java was chosen as the programming language for network computers (NC) and has been perceived as a universal front end for the enterprise database. As stated in Java language white paper by Sun Microsystems: “Java is a simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, multithreaded, and dynamic.”
So here are the most common and significant advantages of Java that helped it to take its high position in a quite competitive environment of programming languages:
- Java is easy to learn.
Java was designed to be easy to use and is therefore easy to write, compile, debug, and learn than other programming languages.
- Java is platform-independent.
One of the most significant advantages of Java is its ability to move easily from one computer system to another. The ability to run the same program on many different systems is crucial to World Wide Web software, and Java succeeds at this by being platform-independent at both the source and binary levels.
- Java is secure.
Java considers security as part of its design. The Java language, compiler, interpreter, and runtime environment were each developed with security in mind.
- Java is robust.
Robust means reliability. Java puts a lot of emphasis on early checking for possible errors, as Java compilers are able to detect many problems that would first show up during execution time in other languages.
- Java is multithreaded.
Multithreaded is the capability for a program to perform several tasks simultaneously within a program. In Java, multithreaded programming has been smoothly integrated into it, while in other languages, operating system-specific procedures have to be called in order to enable multithreading.
Nonetheless things changed since the time when Java was created. In the recent years, many important languages have appeared and left an impact on the technology world. Due to their simplicity and user-friendliness, they have managed to surpass the more established languages. So we tried to make a list of reasons why Java is going to stay on the grind in the nearest future:
1. Java is time-proved.
You generally need a strong reason to switch from a language you’re currently using: it requires time to practice and learn new languages, and you have to be confident that the language you’re considering switching to will be supported in the long term. Nobody wants to build software in a language that will be obsolete in five years’ time.
2. JVM and the Java Ecosystem.
The Java Virtual Machine, or JVM. compiles programs into bytecode, which is then interpreted and run by the JVM. Because the JVM sits above your specific hardware and OS, it allows Java to be run on anything, a Windows machine, a Mac, or an obscure some flavor of Linux.
The big advantage granted by the JVM is in this increased compatibility and the stability it affords. Because your application runs in the VM instead of directly on your hardware, you can program said application once and trust that it is executable on every device with a Java VM implementation. This principle is the basis for Java’s core messaging: “Write once, run everywhere.” And it makes Java applications very resilient to underlying changes in the environment.
3. Java and the Internet of Things.
“I really think Java’s future is in IoT. I’d like to see Oracle and partners focused on a complete end-to-end storage solution for Java, from devices through gateways to enterprise back-ends. Building that story and making a success of it will help cement the next 20 years for Java. Not only is that a massive opportunity for the industry, but also one I think Java can do quite well,” said Mike Milinkovich, Executive Director of the Eclipse Foundation.
Oracle agrees. Per VP of Development Georges Saab, “Java is an excellent tech for IoT. Many of the challenges in IoT are many of the challenges of desktop and client Java helped address in the 1990s. You have many different hardware environments out there. You want to have your developers look at any part of the system, understand it and move on. Java is one of the few technologies out there that lets you do that.”
Thus, Java might have its detractors, and some of their arguments might even be reasonable. Nonetheless Java has evolved a lot since its inception, holds the lead in many areas of software development and has more prospects for the future. So, in our opinion, its survivability is not in doubt.
And what do you think? Is Java going to become one of the dead languages? Or it has all chances to survive? Feel free to share your thoughts in comments below!
Business Development Manager
Professional Software Development
Wearable tech devices, such as smart watches and bracelets, have firmly stepped into our everyday life and accompany us in different spheres of life. And who knows, we may soon witness the next tech revolution in the wearable world.
Microsoft Research and MIT Media Lab PhD students have teamed up to create the next level of wearable: temporary smart tattoos.
The technology is named DuoSkin. These tattoos consist of artistic arrangements of conductive gold and silver leaf, plus tissue-thin electronics. Users can apply the tattoo to their body with a wet cloth, similar to any other temporary tattoo.
The fabrication process is fairly simple: first, you design a stencil with any graphic design software, and cut the pattern out of tattoo paper and vinyl. Then you place the gold leaf layer on top to create conductivity, and attach surface-mount electronics.
Smart tattoos can be used for several purposes. Firstly, the tattoo can act as an interface that can be used, for example, as a trackpad or a button to remotely control devices. It may be quite demanding in the near future as our devices get smaller and smart tattoos could provide some additional auxiliary area, without carrying a larger device. Secondly, they can track and show users information about themselves, for example they can change color depending on the user’s mood or show body temperature. A third possible function is wireless communication. The tattoo could include an NFC (near field communications) tag, an electrical component that includes small microchips to store data that can be read by phones or other NFC devices nearby. In the near future, the technology could serve as a substitute for identification, subway cards, etc.
Cindy Hsin-Liu Kao, the lead researcher, calls DuoSkin a “project” and not a product or prototype. Others may use this information as a basis to create their own personalized on-skin wearables.
Lets’s think a bit out of the box:) The future presented in some fantastic films is about to come to reality: not more physical devices but different tattoos and built-in chips:) Аnd what do you think about smart tattoos? Will they change the wearable world or will soon be forgotten?
Business Development Manager
Professional Software Development
One of the first decisions you need to make before starting a project implementation is: which development methodology should I use? There are different approaches to the software development process. Two of the most popular methods are Waterfall and Agile.
What is Waterfall?
Waterfall is a linear approach to software development. That means that project stages are executed sequentially, and no stage can begin before the previous one is finished. You receive your completed project, fully developed and tested, at the very end of the process.
Pros of Waterfall methodology:
- Simple and easy to understand and use
- Easy to manage due to the rigidity of the model
- Phases are processed and completed one at a time
- Works well for smaller projects where requirements are very well understood
Cons of Waterfall methodology:
- You cannot go back a step; if the design phase has gone wrong, things can get very complicated in the implementation phase
- High amounts of risk and uncertainty
- Not a good model for complex and object-oriented projects
- Poor model for long and on-going projects
- Not suitable for the projects where requirements are at a moderate to high risk of changing
What is Agile?
Agile development, as opposed to waterfall, focuses on building software iteratively. The project is divided into small modules and delivered in weekly or monthly sprints. During each sprint, a certain functional set of features is developed, tested, and delivered to you for evaluation. This approach emphasizes rapid delivery.
Pros of Agile methodology:
- Value is added every sprint
- Easier to add features that are up-to-date with the latest industry developments
- Project priorities are set before every sprint and evaluated after each sprint
- Customer feedback is allowed and will contribute to the final end product
- High level of customer involvement (strong sense of ownership)
- Short time to market: quickly produce a basic version of working software
- Transparency is high
Cons of Agile methodology:
- Projects can run longer than anticipated
- Requires high level commitment of time and energy from developers
What can we conclude from all this? Both methodologies have their own strengths and weaknesses. The choice of methodology really depends on the goals you want to achieve. The key to deciding which is right for you comes down to the context of the project. Is it going to be changing rapidly? If so, choose Agile. Do you know exactly what you need? Good. Then maybe Waterfall is the better option. Or better yet? Consider taking aspects of both methodologies and combining them in order to make the best possible software development process for your project.
Do you use the Waterfall or Agile methodology? Why? Have you ever tried combining the two? How did that work out? Please, tell us below.
Business Development Manager
Professional Software Development
The mobile app development industry is thriving and continuing to evolve year after year. In 2014, we saw mobile app market maturing from smartphones and tablets to wearable devices and Internet of Things. There was also an increased focus on app analytics and mobile app marketing. Actualy developers don’t need us to tell them that the app landscape is constantly changing. But it never hurts to pause for a moment and look into exactly how it’s changing:
1. Swift surges onto developer scene
Anyone in the technology business knows it’s rarely an “if you build it, they will come” proposition. Adoption of new technologies and products—even trendy ones—can take a while. So the rise in usage of Apple’s Swift language for iOS apps is certainly noteworthy: According to VisionMobile’s survey of 8,000 developers, one in five were using Swift just four months after its public launch. Compare that with a 39% usage share for Objective C (which obviously had a bit of a head start with iOS-centric devs) among device-side developers. That’s rapid adoption, to put it mildly.
A decent chunk of early Swift developers—nearly a quarter of them—are new to iOS development. But VisionMobile notes Objective C isn’t going anywhere anytime soon, and the best iOS developers will have both languages in their toolbox: “For at least the next few years it seems that practically speaking it’ll be necessary to learn both languages to be an accomplished iOS developer,” the report reads.
2. Cross-platform tools growing in popularity
The State of the Developer report found third-party tool use among mobile developers, in particular, at an all-time high: 83% of respondents use at least one third-party tool for things like analytics, crash reporting, and testing. Even more notable, use of cross-platform tools has jumped from 23% to 30% during the past six months. What goes into selecting the right tools? One tech exec noted the importance of choosing a stable provider that’s going to be around for the long haul.
3. Enterprise apps make more money than consumer apps
Smartphones continue to fly off the shelves and the app stores teem with activity, yet there’s no guarantee your app will earn a dime. In fact, developers working on enterprise apps are much more likely to make money, and it’s not even close: 43% of developers focused on enterprise apps hit or exceed $10,000 per month in revenue, compared with just 19% of consumer app developers. Many consumers aren’t eager to shell out real money for mobile and other digital apps. On the other hand, as VisionMobile’s report says, “businesses are very willing to pay for software that helps them be productive and make money.”
4. The Internet of Things is hot, even if the payoff isn’t imminent
Plenty of developers are investing energy in something that might take a while to deliver a tangible payoff: the Internet of Things: (IoT). More than half (53%) of developers included in the report say they’re working on some form of IoT project. Interestingly, many are doing so as a side project or hobby, not their actual job. It’s no real surprise that the biggest areas of current interest within the broad IoT universe are those where existing mobile platforms—namely iOS and Android—have a clear stake, such as the smart home/smart building and wearable computing markets.
While it’s still early days, VisionMobile’s report cites an enormous upside in the IOT for the developer community at large: “The [IoT] products with the best software will be the most desirable; hence developers become essential to creating competitive products.”
Put it all together and you get a picture of a mobile development market that continues to evolve rapidly in everything from tools and languages to device platforms and economics. Keeping up with the changes can be almost as challenging as doing your actual job, but that’s one reason why mobile is such an exciting area right now.
Professional Software Development
Working with many startups I was wondering recently why Python and Ruby are so popular and common with young and promising startups, especially Scandinavian ones as my experience shows. I am curious if anyone has analyzed the trend towards Python over Ruby with startups? Also I would like to find out what are the advantages of Python over Ruby if they are so?
I think a lot about choices and decisions at startups. Picking the language/platform to use at a startup is one of the harder decisions. Here I would like to mention the fact that most of startups today make their choice toward Python or Ruby over PHP or Java. From what I have read, PHP is just an inferior language to Python and Ruby. Even though a lot of people are using PHP because it is easy to get started, it seems to be easier to develop bad habits with PHP. Why jump on a bandwagon when you obviously know is broken? I’ve come to realize that the main reason why PHP gets into trouble with the purists is that there are just so many ways of doing one thing — it is not that standardized. I think it became the most popular language only because it’s so easy to pick up!
Python/Ruby win over Java on speed of development, and conciseness of code. This generally makes Python/Ruby a better choice for small startups for whom speed to market, and ability to implement new features matters most. Most of the modern sites chose Python when they were small startups. Only later did they have to scale. Websites tend to be horizontally scalable, meaning that for a surprising range of volumes of traffic you can just throw more webservers at it and the bottlenecks will be at other layers (for instance the database).
Searching for relevant information to compare both Pyton vs Ruby languages and analyzing customers’ demand on the software development market I found out that Python appeared to be the more popular choice for startups trying to get a minimum viable product launched and seek out potential venture capital.
This has less to do with the merits of either language and more to do with the philosophies of the frameworks represented by either language. RoR really can’t be beat as a rapid application development framework, and developers discussing Ruby on the web are generally referring to RoR. Django purports to do the same, but the overall philosophy of the python community is more minimalistic – python developers generally prefer to make their own selection of tools such as ORMs, Persistency layers and libraries. A lot of people start Python web development with Django but move on to something more minimalistic like Flask, simply because the community seems predisposed to building its own stack in this way. RoR is more opinionated, and developers who are more predisposed to hitting the ground running, especially in the startup field, often take the Ruby fork in the road.
There is a “coming of age” point for startups coming from RoR or PHP, however. I’ve heard about several companies who had this exact same experience and ended up moving towards something like Python or Scala. I’m not certain this is specific to python, but I can say that as startups grow and become more ambitious, they move into problem domains poorly represented strictly by web frameworks/languages. Search features and data extraction increasingly rely on advanced data mining techniques utilizing things like natural language processing and find they need to reengineer their stack a little to accommodate new ideas. Increasingly I see companies not abandoning their RoR/PHP/Django frontends, but creating separate REST APIs that almost always use bare python or a JVM language to take advantage of more complex computation outside of the HTTP req/response model. Ruby could be used for this kind of offline processing, but the toolkits are just better and more mature in other languages since RoR is so prevalent in the Ruby community and consumes a great deal of the mindshare.
The fact of the matter is that most web startups represent feature sets early on where development speed is the prime concern, and so the language/framework with the biggest potential hire base and best RAD features typically win out early on.
As my personal point of view that no single language can answer every problem satisfactorily, and it is foolish to stubbornly stick to a single language for every case. Nevertheless a lot of our clients stick to Python when starting up their business. Let’s try to see what are the advantages of Python over Ruby?
The two are more similar than they are different, in everything from design to disadvantages to common uses – you can’t really go wrong either way, and shouldn’t base your decision on syntactical differences.
As Ruby developers say, Python’s main advantage has nothing to do with the language’s features. It’s more subjective: it seems that Python has more momentum amongst serious computer scientists. It’s increasingly popular in academic and scientific applications, and a lot of the technologists I respect the most seem to prefer it. By comparison, the Ruby community feels more designer-y and relatively more novice.
What this means is that while the Ruby world has very slick out-of-the-box product solutions, the Python world seems to produce more exceptionally well-written components like Tornado (web framework). Combined with it being used at Google and the potential for stuff like LiveNode to be released as open-source, I’d cast my lot with Python if I were starting today.
Thinking Python may be the best choice of startups, what is your opinion on this?
Looking forward to hearing from you!
Agile development seems to have received more than its fair share of media attention in recent years. Yet it is still sometimes criticized for not being “robust enough for serious organizations” from time to time. Other comments suggest that it may get a project started off rapidly, but ultimately in the long term it’s more costly.
Martin Cheesbrough is CTO of financial services and energy trading software development company Digiterre. Cheesbrough maintains that the problem here may be that some organizations simply don’t understand Agile. A simple truth is that unlike other approaches, Agile doesn’t come with a weighty 300-page book of what to do, and what not to do. Instead Agile is based on a set of guiding principles that fit onto one A4 sheet.
“Problems often occur when ‘process-orientated-people’ think that delivering a project using Agile involves following an ‘Agile process’. Agile advocates a little and often approach with the development team given complete autonomy over their tasks. The feedback loop is ongoing and concise. This ensures that you stay on track and collaborate but also guarantees that the project keeps moving and remains relevant to the business. That’s the theory – and it makes perfect sense. But when putting it into practice something seems to break down. Agile isn’t about becoming a slave to process; instead it concentrates on getting the most out of the development team and playing to each person’s strengths. Smart, creative individuals that are able to break out of the process mould and embrace the Agile philosophy are fundamental to its success.”
Cheesbrough suggests that just because Agile is light on supporting paperwork that it is deemed insubstantial, lightweight and risky.
“Agile tools and techniques promote transparency and expose how the project is developing each and every day. This means that any bumps in the road can be smoothed out before they become obstructive to progress. Companies such as Flickr are demonstrating that little and often improvements negate the need to get bogged down in ongoing projects. Each day the site makes small changes that enhance the service it offers. Isn’t this the flexible IT environment that will power the businesses of tomorrow? It’s been a long time coming, but the revolution engulfing IT to make it faster and better is demanding significant changes to development. Say goodbye to prescriptive process and hello to the more free thinking future of development.”
Professional Software Development
Let’s find out how good can get agile development methodologies, using cloud-based resources
Agile, the great enabler
Agile is a style of software development that places new capabilities right there in the hands of users, as and when they need them, and usually almost just about as rapidly as they need them. It does this by stripping the project requirements down into achievable component parts and then focusing on each part individually, single-mindedly, full of intent, energy and drive. As each part is developed so it becomes‘iteration’; a release of useable software that can be made available to users instantly. And while they start using it then the development team moves onto the next step, the subsequent iteration. At every step of the way there is an overt emphasis on collaboration between developers and users. Nobody goes off behind screens or departmental smokescreens or politics or excuses; everything is transparent to the client and the users. And one of the most magical aspects of all is that no functionality is built in which users are not going to use.
Put Agile together with Cloud and it’s a case of ‘now you don’t see it, now you do’.
Cloud computing, the great provider
Cloud and Agile are suddenly almost synonymous, in IT-speak. Perhaps the best way of summing up the benefits of Agile development methodologies is to refer you to the actual word itself, or the broad definition thereof: able to move quickly, with skill, and control. The Cloud can catalyze the development process. It’s just like the weather, in fact; it’s everywhere. This means that new applications can be made available to users instantly, the very second a development team has completed them. There is no need for drawn out distribution procedures, the risks of down-time thus entailed, patches and reinstallations. Users can jump straight in and start using. Integration issues are overcome, change management is minimized and risks are minimized.
Putting Agile together with Cloud accelerates an organization’s pace of improvement. Bear in mind also that the working style of Agile is very much tied up with user involvement, drawing users’ right into the heart of the development process. Functionality is developed as they want it, how they want it. As developments move along in cumulative steps (iterations) the features and benefits can be rationalized and reprioritized as each project unfolds. No waste, either of time, or money. And just as soon as everybody agrees that the application is where it needs to be, off it goes into the cloud and everyone can start using it.
The prospects for the organization, in any sector, are breathtakingly exciting; Agile, working via the Cloud, now gives greater control over process innovation and more strength to the competitive edge than has ever been the case before.