Get Developing for Free - Enterprise Features

Find the growing costs of everything unbearable? The cost of living and modern life mounting up? To Develop, you need the latest devices and the latest patches and the latest SDK...Why does everything cost money? Why can we not get something that is FREE, that once in a while moment when we can sit back and relax and not worry about yet another cost.

Thankfully a lot of developers and companies are picking up on this and offering FREE versions of their software, while there are still some that are going in the exact opposite direction. RealBasic is planning to release the new IDE version of Real Studio as a free offering and then you need to purchase the modules as required ( http://www.realsoftwareblog.com/2012/06/pricing-changes.html )

Gideros Studio offers their Mobile Development SDK for free (actually as attribution ware, where you need to display the Made with Gideros splash graphic). It would actually be unfair to not include Moai in this list as they not only offer the SDK for free but also give away the source code.

The direction of this article is aimed at Mobile development. While iOS is a pretty dominant platform of choice for developers, Objective-C is however not the favourite language. The reasons vary from the undertones of C variants or the fact that once even plagued me despite the fact that I had experience with C/C++, the - and + signs and the square brackets [ ] and the colons in functions. Once you overcome that and understand, it is really not much to be scared of. Whatever the reason, if you are not developing with Objective-C, then you could be using Java, DotNet Ruby, Python or Lua. Though a lot of purists might sneer at Lua as a language, it is quickly becoming the language of choice with a lot of Mobile Framework developers, with Corona SDK, Gideros Studio, MOAI, Codea, Kobold2D and then Löve for the desktops.

The Development Frameworks are of three types
1. Open Sourced
With this type of SDK/Framework you can (if you are capable and willing) to add or modify the functionality as per your requirements in the application.

2. Closed Framework but extensible
With these type of SDK/Framework you cannot do much but to wait for the developers to release the new features, however you can extend some of the functionality by writing a plug-in or some form of a bridge between the code and the framework.

3. Closed Frameworks
With these you can pretty much do nothing other than twiddling your thumbs and searching for the next option that could suit your purpose.

Many of you can instantly know which frameworks fit in which criteria given that you can download the code for MOAI and Codea and Gideros features plug-ins. Not to be left behind, Corona Labs has offered the Enterprise features to it's developers. This allows writing code in native languages (Java for Android or Objective-C for iOS) and this code can be used in your apps. This is in more ways than one similar to a plug-in. The only catch with this is that it costs a lot of money. I guess the "Enterprise" tag is a synonym for "Exorbitant".

While you can create Plug-Ins, if writing objective-C code was your cup of tea, why would you even consider a Lua based framework? You could continue to make quality software with Java or Objective-C. So while Plug-ins are a brilliant idea, they are also not for everyone. So, what can the average developer do? Bear in mind that many designers and non-developers that are making games (and actually even making loads of money) do not fancy digging deep into the languages and prefer some intermediate language. They are happy to get code snips from sources or even outsource that bit of code writing.

Around late 2009 I came across Wax, (not the one that could help depilate body hair or make the mustaches pointy and shiny) This was a wonderful library written by Corey Johnson that allowed Objective-C iOS coding using Lua. It was a good concept and it could be used mainly with UIKit and other iOS frameworks, but it could not help in creating graphical applications. This is where most of the frameworks came in, an OpenGL surface and the easy of Lua language for scripting, a combination that could not be ignored.

So while Developers were happy with the Plug-Ins functionality of Gideros, they were waiting for a few features that could be offered with UIKit only. which brings us back to writing a plug-in is not every developers cup of their favourite beverage. How this all relates is that Corey created Wax, Gideros Studio offers plug-ins, developers require UIKit features. See the common link? Here steps in Andy Bower, an amazing developer. While he was trying to create his own plug-ins, he realised the tedious nature and the pitfalls. So he used the Wax code and created a plug-in from it. So now when wax is a plug-in, it also offers the entire iOS suite of functions available via a Lua interface.

Want a TableView, no problem. Found some wonderful code that was written in Objective-C and wished that you could port it over to Lua, no problem. Want to do things that the frameworks do not allow, no problem. The best part or the concerning part (depends on how you look at it) is that the functions are all called and integrated using Lua but still have the feel of the Objective-C type long function names.

Want to see how easy it is to add a table to Gideros and access the selected item in Lua?

waxClass{"StatesTable", UITableViewController, protocols = {"UITableViewDataSource", "UITableViewDelegate"}}

-- DataSource
-------------
function numberOfSectionsInTableView(self, tableView)
  return 2
end

function tableView_numberOfRowsInSection(self, tableView, section)
  if section == 0 then 
    return 5
  else
    return 3
  end 
end

function tableView_cellForRowAtIndexPath(self, tableView, indexPath)  
  local identifier = "StateCell"
  local cell = tableView:dequeueReusableCellWithIdentifier(identifier) or
               UITableViewCell:initWithStyle_reuseIdentifier(UITableViewCellStyleDefault, identifier)  

  cell:textLabel():setText("Item " .. indexPath:row()+1) 
  cell:setAccessoryType(UITableViewCellAccessoryDisclosureIndicator)

  return cell
end

-- Delegate
-----------
function tableView_didSelectRowAtIndexPath(self, tableView, indexPath)
  self.tableView:deselectRowAtIndexPath_animated(indexPath, true)

  print("Tapped on " .. indexPath:row())

end


  self.tableView = UITableView:initWithFrame_style(CGRect(0,0,320,480),UITableViewStyleGrouped)
  getRootViewController():view():addSubview(self.tableView)

  self.tableView:setDataSource(self)
  self.tableView:setDelegate(self)



Want to add an AlertBox?
alert = UIAlertView:initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles("The Title", "The message",alertViewDelegate,"OK",nil)
alert:show()

Want to Add more options and want to handle the same and know which button was clicked?

waxClass{"UIAlertViewDelegate", UIAlertViewDelegate, protocols = {"UIAlertViewDelegate"}}
 
alertViewDelegate = UIAlertViewDelegate:init()
function alertView_clickedButtonAtIndex (self, alertView, button) 
  print(">> Tapped on button ", button) 
  -- This is generally 0 based, so the OK Button will be 0 
  -- and then One =1, Two=2, Three=3 and so on.
end 

alert = UIAlertView:initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles("The Title", "The message",alertViewDelegate,"OK",nil)

alert:addButtonWithTitle("One")
alert:addButtonWithTitle("Two")
alert:addButtonWithTitle("Three")
alert:addButtonWithTitle("Four")

alert:show()



You can well imagine the possiblities of adding camera control, access to UIPopovers, UIPickers etc.

You can head over to the GitHub maintained by Andy Bower at ( https://github.com/bowerhaus ) and download the MIT licensed free to use code from his bhWax library (which includes the instructions and sample code) and Corey's modified Wax code for Gideros. A few things to note are that you will require to build for the Device Player with the Wax plug-in before you can run the code. If at any point you are confused or lost, there is a write up and an accompanying video by Andy Bower at ( http://bowerhaus.eu/blog/files/hot_wax.html )

As one user described this is the Mother of all plug-ins, it literally plug-in the entire iOS library. So your app can benefit from the latest and greatest features. If this does tickle your fancy, look out for more articles soon that will use this plug-in and help you achieving what you want. Accordian Folds, custom drawings, popover windows and panels, MapKit, Augmented Reality, Barcode scanning, 3rd Party integration... the list can go on, you can now have all of that in your app which still runs on an openGL surface.

So if you were planning to go Enterprise and go boldly where no man has gone before, you can take the risk free step, get all of the functionality of the Enterprise Edition for Free and right now.


Do you have a comment? You can post them in the comments box below. If you like the article, you can help spread the word and let a friend or acquaintance read this article by tweeting about it or forwarding the link to them. You can also help by liking our page on Facebook it's found at ( http://www.facebook.com/whatsin4me ) You can also follow us on Twitter at @OZApps and or @ReviewMe







Comments

Popular Posts