I'm a C# developer looking to branch out. I want to try either flex or flash. Any recommendations on which to go with and why?
Flex is a framework for Rich Internet Application development. It extends Flash with controls and namespaces for UI, data, etc.
If you want to venture a little out of your comfort zone, experiment with Flex. If you've ever worked with WPF it will feel familiar. If you want to get really wild and crazy, add Flash. You can combine Flash assets with Flex projects to create some visually zingy applications. It's worth experimenting with both to get a feel for what they can do together, which is quite a bit. Flex Builder is a good tool for both Flex and ActionScript projects.
I encourage you to try Silverlight as well, since you already have the C#. Both platforms have lots to offer.
Silverlight! :D
Seriously, if you already know C# and you want to leverage that for rich internet applications, that's your best bet.
That said, if you're wanting a programmer-friendly non-C# way of doing things, I'd recommend Flex over Flash. Flash is..... shudder.
This link might help you in your decision.
I gotta argree with Dr. Dredel. It's really hard (not impossible) to access databases and other server side stuff in flash. I took a flash class in high school, worst 18 weeks of my computer life.
You guys are forgetting that Flash is installed on 98% of all computers, while not even Bill Gates himself knows how many computers Silverlight is installed on. You should keep your audience in mind when deciding on what platform to experiment on. Also, remember that linux does not support Silverlight.
I think a good analogy to your question would be saying "I'm thinking about trying something new, should I learn how to bake or ballroom dance?"
Flash is primarily a client building thing. It has lots of hooks and bells and whistles, but at the end of the day 98% of what you build is sitting on a client and displaying stuff, not running on a server.
flex is, on some level, an alternative to things like JSP.
Commercially there's a lot of need for Flash, while Flex is just catching on. So, that might influence your decision making to some extent.
Related
What does a web designer need to migrate to Flex quickly?
A: tell me how I can get good fast
B: tell me why it would be unrealistic to learn Flex quickly
I want here both sides of it. Maybe web designers are not qualified, I'd
honestly like to know what it would take.
Thanks,
TELL ME WHAT I NEED
• Projects I need to complete in Flex
• Tutorials
• Key concepts
• Other technologies in a nutshell (webservices, SOAP, AJAX, HTML5 etc.)
MY SKILLS
• I code JavaScript (including HTML, CSS, XML, not much AJAX)
• Flash (hand code ActionScript 3.0 in classes, reasonable OPP skills)
• I'm a designer 'no computer science degree'
This Flex reference should include everything needed for beginning Adobe Flash Builder 4
To be honest, the tenor of your post is a bit irritating. Nothing worth doing comes easily or without some level of work. "How can I get good fast?" implies you either don't have time or don't possess patience to do things right. I doubt that's the case, however, and thus here are a few thoughts to your questions/bullet points:
A: tell me how I can get good fast
I don't know what you know, and thus cannot tell you how long it will take you to become a solid Flex developer. If you want to get good, you'll probably need at least some time; if you want to be fast, you can pick Flex up rather quickly, and your application may end up a buggy mess. Depending on your definition of "fast" (and what you already know, of which, as I've said, I'm completely ignorant), you'll probably have to take your pick between the two.
Growth in any area usually comes with experience, instruction from superiors, and learning from ones' mistakes. Getting "good" quickly is a concept which doesn't take these into account.
Your knowledge of Javascript, CSS, and design will certainly help, and I don't want to denigrate your current experience. Seven years of design is outstanding and a great gateway to Flex. Those skills, however, likely came with time and effort, and you should expect the same with most new technologies.
B: tell me why it would be unrealistic to learn Flex quickly
Of course you can learn Flex quickly. I picked it up in a few days, and have spent the last 2 years of my life writing Flex applications full-time. I consider myself well past proficient, and I still have quite a bit to learn. The basics aren't terribly difficult (esp. since you have ActionScript experience). Learning enough to be good, however, creates an explosion of new material to cover. Consider these questions:
Do you know how to architect a web application? Not just assembling a quick and dirty web-page with a few basic controls -- do you know how to build a full-fledged web application which is extensible, scalable, and robust in its communication with a remote data server?
Are you working with established data servers, or do you have to implement your own?
Do you know how to manage large data sets efficiently?
Do you know solid software design/development techniques and principles (DRY, YAGNI, KISS) and how to implement them in your code?
If you can't answer these questions (or answer them negatively), you probably have a way to go. If you can answer them positively, you're at least on the right track. There's still a plethora of things to know about Flex (some listed below), and each one will take some time to pick up.
• Projects I need to complete in Flex
This question is a bit vague. If you're referring to tutorials, you're repeating yourself (see your next bullet point). If you're asking what applications will facilitate writing Flex apps (e.g. FlashBuilder 4), you haven't done enough homework. If you're asking what programs we think you should write, you're asking the wrong people. See my next point...
• Tutorials
There are many tutorials for Flex development. Start with a basic Hello World program and add simple features to the page (e.g. user controls, multiple MXML and ActionScript files, packages, styles, etc.). You said you're a Javascript developer with HTML and CSS: why not attempt to rewrite one of your previous applications in Flex?
We don't know what topics you need to cover because we don't necessarily know what you'll be doing in Flex. If you never plan on performing HTTP requests, you probably don't need to learn this functionality (at least not immediately). If you will never work with server-side notifications to your app, BlazeDS and LiveCycle Data Services might not be important.
• Key concepts
Man, where to start? Data binding, Code behind patterns, MXML vs ActionScript, Flex Skinning, working with XML, MVC frameworks, the list goes on. No list of "key concepts" is going to make you good fast.
• Other technologies in a nutshell
(webservices, SOAP, AJAX, HTML5 etc.)
Here are a few things you might want investigate, depending on your needs:
BlazeDS
LiveCycle Data Services
Flex and HTTP
Asynchronous Requests in Flex
Mobile Application Development
My recommendation is to start with the basics, and see what you're up against. Build a "Hello world" app and extend it to include various other features. Then assess what you hope to build with Flex, and how you expect to retrieve data from a back-end server. These two points will help you decide what you'll need to learn next. From there you can research each new topic you're trying to address and how to do it correctly.
I am a student of computer science and am interested in learning development of RIAs. So which among silverlight and flex is more suitable for me and y?
Silverlight is the very accessible. You can develop Silverlight applications using free tooling provided by Microsoft in via its "Express" range of tools. Also if you use C# as part of your work you'll be learning a language which has wider uses. ActionScript on the other will teach quite a few aspects of Javascript yet it also has many features that are perculiar to its slant of Javascript and only really useful in the flex context.
However have you considered HTML5 as a platform for RIA? Whilst being embyronic and almost non-existant tooling it may also be a contender for RIA delivery in the furture.
Personally, I think you'd be silly to ignore Silverlight. It's going from strength to strength and is growing a lot faster than Flash. As Anthony rightly points out, businesses that would never have considered Flash are turning to Silverlight for replacing both Web and Desktop apps.
Flex with ActionScript is better than Silverlight. You can find a range of tutorials and application for Flex in the web.
HTML 5 has come, but still you will find a range of browsers not supporting it fully. You may end up frustrated with most of your clients in I.E 6.0
My Bet is
Flex with PHP OR
Flex with JAVA
Could really enhance your programming skills and career growth to a peak.
I would say that flash+flex is much better than html5 (which is too slow for now) and silverlight (which was a big disapointment for me, a big BUM at the launch and that's all)
Check out http://flex.org/ for some nice RIA tools, and maybe that can help you more in taking your decision.
I want to develop a simple race car game.
A user will see his car from above and can use right and left arrow keys to navigate in the track and between other cars.
What is the correct way to develop a game?
Do I use pure actionscript with FlashDevelop or the Eclipse plugin?
Do I use Flex3?
Is it better to use adobe Flash CS4 Professional?
The advanced version will also include 1-on-1 or multiplayer game.
Do you recommend a separate XMPP server to send real time data between players
or is there a flash server suitable for this?
A book about games in flash and links to tutorials will be appreciated.
Thanks
Man are you on the verge of a brave new world, ha.
Alright, so basically everything that you're mentioning is a viable option. A lot of it is going to come down to personal preference, honestly.
If you are a very visual person and it helps you to see things on the stage as you control them, go with Flash. It's not quite as powerful as Flex when it comes to dealing with data, but allowing you to link up your classes to sprites and movie clips in your library is huge and honestly underrated by a lot of "serious" developers.
If you're going for multiplayer, you might consider looking into Adobe LiveCycle Collaboration Services. It's a hosted solution from Adobe that takes a lot of the work out of setting up a multiuser environment, though it's not free.
Finally, if you can wait a few months, Flash CS5 will allow much tighter integration between FlashBuilder (the upgrade to Flex Builder) and Flash. Basically you'll be able to use both together very easily.
If you want to get started learning this stuff, I strongly recommend Lee Brimelow's excellent site gotoandlearn. The first few on there are AS2 so feel free to skip them, but just watch all of his AS3 examples in order and when you're done you'll be a flash developer.
You can also check out the Adobe Flash/Flex Cookbooks to look up specific questions, or google "Flex in a Week" to learn flex.
Good luck!
In the 'good' old times I used to make small Flash games in Flash IDE with AS2. That was really fast. (Though, code was quite ugly.) Since AS3 is available, I use Flex. If graphics matter, I use Flash IDE and Flex Builder parallel (Build/compile/draw in Flash, code in Flex Builder). Of course, it's not the best, but I just hate how Flash IDE handles code.
For the multiplayer mode, I suggest taking a look at this article: http://www.flashrealtime.com/basics-of-p2p-in-flash/ It uses Adobe's Stratus server to do P2P communication. It's quite easy to setup and use.
Books: http://flashgameu.com/ - basic level, but good for beginning
And of course: http://oreilly.com/catalog/9780596526948
My favorite tutorial site: http://active.tutsplus.com/
first of all: there is no correct way to develop games ...
one advice I'd like to give you is: do not use CS4 for developement ... CS4 is a great tool to create graphics and animations, etc., but is terrible for programming ...
if you want to develop a proper game (or any sort of web app), that you don't want to scrap within months, you need to layout an extensible, flexible and robust architecture, which can only be done with rock solid code, and than plug in all you nice graphics and effects (which can be made in CS4 of course) ...
Flex is probably the fastest way to get UIs up and running ... if you are for example creating a strategy game, which requires a lot of forms and overviews etc., then you should use Flex for that, altough ASwing and other frameworks are reasonable alternatives ... I do not like Flex for a number of reasons, but I guess in the end they're all a matter of taste, so it is up to you to decide what you'll use to create all the standard UI your game will need to have ... the more UI to create, the more I'd advise you to use Flex ...
when it comes to servers, most people tend to use Red5 and SmartFox, which both perform quite well, yet in my opinion have quite a lot of unnecessary overhead and impose a lot on your networking engine ... still, you can start with them, and might find out they're just what you need ...
here comes my personal advice: use Haxe ... it allows you to use one language for servers and clients ... also, it is a great language, once you get the hang of it ... I used AS2 and AS3 for a lot of time, but since I finally had the courage to switch to Haxe, I don't want to go back ever again ... although the languages appear to be similar, they are not, so do not expect them to ... once you got your head around it, you'll understand what I mean ... check out ThreadRemotingServer for creating servers easily ... check out haxelib (more info here) to get some helpful stuff ... and don't be shy to post on the mailing list ... Haxe has a great, friendly, helpful and enthusiastic community ... there's also a forum (which is not used so much) and an IRC channel to get support ...
hope this helps ... ;)
I'm only answering this for points. Dude, you have a lot of work to do if you are serious about this (which i doubt, since you don't even now how to use a search engine or wikipedia). Anyway, here you go...
http://en.wikipedia.org/wiki/Adobe_Flash
I currently do a lot of work in ActionScript 3.0, I also love to program in Java. Is JavaFX perfect for me? What is the general feeling on JavaFX, will it become a power house, or go down the same path as Java Applets? Could the designers I work with become comfortable with JavaFX to the same extent they are comfortable with ActionScript and JavaScript?
Just wanted to add my $.02... I've been working in JavaFX for the last 4 days on my first little side-project using it. As some background, I've been programming professionally for about 9 years, starting with C, and have been doing Java and C#/.NET for the last 6 yrs.
IMO, JavaFX its way more frustrating that it should be. Here are some gripes:
The syntax is just odd at times. It could easily be more like Java, since its JavaFX. But the syntax isn't an easy transition from Java.
The order of items in a .fx file actually matters, which means you run into stupid circular reference errors, and "oh you can't use this variable yet because it hasn't been initialized" problems that the compiler should handle with ease, but doesn't.
Random things just don't work. Actions/events on Swing controls don't always work, for example SwingSliderBar's onKeyPressed/released don't seem to be called.
Error handling is just bad. If an exception occurs that isn't handled, there is no real way to tell other than the Java console, and UI elements start to react funny. For example, make a SwingText box and bind its value to a variable. Now trying to edit the value in the text box will throw an exception because you cant edit the bound variable. However in the UI, the text box just starts having funny things happen. some characters only 1/2 paint, sometimes backspace does nothing, sometimes it deletes a character, sometimes you can press 2 keys ont eh keyboard like "1" and "2" and the text box will end up having "21" entered in it instead of "12", etc...
Although my absolute #1 problem with JavaFX development right now is Netbeans. It is pathetically bad at JFX. Can't debug, errors display wrong in the IDE (I've had it flag comments as errors!), the intellisence only works like 40% of the time, event he code templates preprogrammed in the IDE for drag & dropping controls aren't correct. I forget which one, but one of them drops a "&" at the end of the inserted code that is never valid and always has to be manually deleted... its just plain awful, and is unacceptable for a company like Sun.
Another gripe is general documentation. Its just lacking. Somehow the JavaFX API doesn't even come up as the #1 search result on google when searching for methods/classes. Tons of "examples" out on the web don't work any more as every version has major refactoring changes, and classes removed or renamed.
Overall, I give JFX a 4 out of 10. I want to like it, but JFX 1.1 just doesn't cut it... its definitely not what I would consider "production ready".
A resounding "meh".
When I looked at it a year ago, they had a one-way SVG to JavaFx conversion tool. Great, so you can author your visual content once, mark it up with a lot of behaviour, and then the next time you want to make it look good, then what?
If you take a look at this tutorial you can see what I mean. We're drawing stuff by dragging shapes from a palette into source code. OMGWTF. I am not showing that to my graphics department.
I hope I'm wrong about JavaFx, but I don't think they get it. Please, won't somebody at Sun give us a presentation layer that doesn't have its tentacles inextricably intertwined with code?
I left my last job to move from Java to .NET development.
There were a number of reasons for making the move, but the single biggest reason was that I was sick and tired of trying to build 1st class UI software with Java & Swing. It has been six years and I'm so glad I moved on. I see no reason to believe that Sun finally understands UI development with JavaFX.
I am convinced that Microsoft is finally in the process of giving us a platform to build rich interactive applications in the browser. I say that after having built commercially available software which was delivered as a Netscape Plugin 13 years ago, followed by ActiveX controls and Java Applets, and seeing all of these platforms fail to become ubiquitous in the enterprise for one reason or another.
I realize that Silverlight 2 is still lacking in depth and maturity, but Microsoft has shown me enough commitment at this point that I believe it will be the dominant RIA platform in a few short years - at least for projects which require a "real" programming language. I am sure Flash et al. is not going away anytime soon, but Flash is not appropriate for the kinds of software my company builds.
The icing on the cake for me is the fact that I will still be able to use Visual Studio, C# and a large percentage of my current code base (the core engine which is entirely separate from the UI). Of course, if you are coming from ActionScript, this would not help you.
One more important point is the fact that Silverlight and WPF share so much in common. Our plan is to share a large amount of implementation between Silverlight and WPF versions of our software. It is only a matter of time before WPF is the standard for Windows applications – I don’t know whether that is a couple of years or ten years, but it will clearly happen over time. Being able to target the most popular browsers / OS’s with Silverlight and Windows from the same code base is a tremendous advantage IMO.
If you know Java then moving to C# is a piece of cake. And unless you are using one of the nice (not free) Java IDEs, then even the free versions of Visual Studio will be an improvement over what you are used to. The hurdle will be learning the new way of doing things with XAML – but it’s some pretty cool stuff so you might actually enjoy it.
Although it appears fairly powerful in terms of capabilities, I'm kinda blah about JavaFX because of its structure and implementation. It seems like a really half-hearted attempt at getting into the Flash/Silverlight market. Too scripty.
I would argue in favor of going the Silverlight 2 route, but I'm primarily a C# developer so I'm a little biased there. If you don't like that route for whatever reason but still want a richer UX for your users, I'd suggest Flex; it seems much better organized than JavaFX to me.
Just my two cents on the subject.
If you know Java but want to do the stuff you thought was only feasible in Flash - then yes JavaFX would be good for you.
Without a doubt it's going to be much more easier to merge your Java knowledge with the design stuff.
And I believe the tooling will only get better which will make it simpler to use.
Unless you’re working on an internal app I would stay away from it. Users generally don’t want to have to deal with another program that accomplishes the same thing as Flash. I don’t think its install base is large enough yet to make it convenient for end users.
I've been developing Flash Applications with Flex for about 2 years now and I decided to give a try to JavaFX because we are constantly getting user complains that they cant use the applications from their IPhones (and I love Java).
That's one strike for Flash (no wide mobile support).
To be honest I was quite impressed with JavaFX (in a very bad way).
The documentation is incomplete.
The script is simply awful; its this weird hybrid between JSON and R with a feeling of a Java-deja-vu.
I spent the first 3 days painting polygons and making gradients with CODE... WTF!!
I tried to convince my graphic department to try it and they simply don't seam to grasp how the production suite is supposed to work, they keep complaining that Flex skinning is way easy and looks better in the end (Which is absolutely true).
The "CSS support" is simply a bad joke.
It generally feels like a mediocre attempt to offer an option for RIA frontend.
I can only think of a couple of good things about it:
It can be run from an IPhone / IPad and almost all mobile devices.
You have access to all the Java code you want which is great considering the limitations that ActionScript has (no overloading, no private constructors, etc). This is a great thing for us the programmers, but lets remember for a second that this is a frontend/presentation technology... that means that users will have to actually see the thing, so if it doesn't look good and have cool animations / effects they wont dig it.
The Script is way less verbose that MXML files are (with the cost of being unintelligible).
Talking about performance... Flash Player is this huge green blob that keeps growing and growing until no RAM is left compared to how JavaFX runs (JVM rocks! unfortunately this has nothing to do with the actual JavaFX API its just that the JVM... well it rocks!).
It has this cool feature where you can drag the applet outside the Web Browser.
In the end, Im happy I have an option to go mobile but this is light years way of the matureness that Flex/Flash has accomplished regarding RIA applications. The future of Flex/Flash as a wide distributed web technology is not clear (it may end up being used only for annoying banners and online games), no one wants to depend in a close technology as the Flash Player is, that's why the whole Web community is striving to get Flash out of the picture (HTML5 video support, No Flash Player for Apple devices, etc). So an attempt to have an open one is always welcomed, it's just that JavaFX feels like this incomplete rushed beta version of something that Sun felt obligated to come up with in a weekend during a bad hangover.
I Hope this is useful to someone (and offensive to someone at Sun/Oracle =p ).
I've spent the weekend 'playing with it. I see nothing useful in it. It's a iteration of swing / awt. I guess it will be nice for mobile devices but beyond that its nothing useful.
Ideally I'd like to use flash but find it painful to intergrate with a backend of any type.
Well, the syntax of both ActionScript and JavaFX seem to share a lot of similarities, so maybe "Yes".
I'm learning JavaFX script at the moment and I actually like it. But what I don't like, and is maybe it's biggest drawback, is it's awful documentation, which is often not up to date or incomplete.
I've been working on a JavaFX application for several months now. Personally, I love the language. They seemed to me to have made some very smart decisions in choosing the syntax and language constructs (I can bore you with a list if you'd like). I've been programming in it for a few months now and it seems like a very efficient and even enjoyable language to program in.
I think its best use right now is for desktop applications and/or applications deployed through webstart. On the desktop it has a rich set of features and can still make use of the other features of Swing and the rest of Java. From what I hear applets are still slow on some systems, and without Android support the mobile capabilities are non-features. The applet/mobile/TV/web support seems to me more like a bonus for desktop developers then as key features that would get you to use the technology.
So it really all depends on what you plan to use it for. If you are building desktop applications that you want to run on the Java VM that can make use of easy multimedia and rich ui controls, then I think there are good reasons to look at the language. WebStart has improved quite a bit and makes for a nice deployment tool. If you are looking to build web applications, then it might be interesting, but for now I'd say HTML5/ajax are more relevant (you might want to look at ZK in this case). However even with HTML5 ajax has its limitations, and if you find yourself running into them then JavaFX may offer you options. For mobile platforms it won't be relevant until there is stable Android support - in that case I'd just stick with the Android platform itself for now.
I've just finished a flash project where I did the entire project in "pure" AS3, without the use of the Flex framework. I found very little written about this on the web, so I'm not sure if this is a common way to develop RIA's, or if I've jumped off the shoulders of giants and done something stupid that will bite me later.
It seemed like a good idea at the time (famous last words!), but was hoping to hear from someone who could confirm.
Thanks,
Marcus
There's nothing wrong with it. People do that every day using FlashDevelop and AS3-only frameworks like PureMVC. Doing a complex app without any framework to support may get difficult to support in the future, but should be OK if you adhere to well known best practices. Future maintainability, especially if it has to be maintained be someone else, can also be greatly improved by using common design patterns throughout your code and architecture. Barring all that, if you're really just slinging code to build something with any real complexity, you're probably screwed unless you documented every function and the overall architecture very very well. Maybe not today, maybe not tomorrow, but some day you're (or someone else is) screwed! ;)
Flex is nice if you want to create something that looks great real fast within the confines of what the Flex framework gives you.
We used to fight weird framework bugs which Adobe didn't seem to care about or took way too long to fix. So we opted to drop Flex in favor of our own UI framework and we've never looked back since.
Sounds like a perfectly good idea. Flex is really just an overlay of rapid-prototyping, and communication standards, on top of pure AS3.
What you gain in ease of development and a large library and API, you lose in streamlined, strength and simplicity.
I'm currently developing a medium sized app in Flex and although the first phase of development was a breeze, the later stages have been fraught with weird framework eccentricities.
It is definitely okay. For example, I've heard that the Issuu.com platform is not based on Flex but a custom framework.
Thanks all! I've been very happy with AS3, and like the amount of control I get, as opposed to using MXML/Flex. It's good to hear I'm not crazy!