SlideShare a Scribd company logo
Abstract Mashups
for Enterprise Java
       Ed Burns
      Hazem Saleh
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
Mashability

                       adjective
The property of a software system to be re-used in contexts
  not imagined at the time the system was first deployed



              Mashability is a matter of degree


                     Not just embedding


It's possible for software to only have superficial mashability
Mashability
Ease of performing the mashup




                                                                                                               Twitter, yammer,
                                                                                                               etc.




                                                                              Browser
                                          AS/400                              extensions
                                Flash/Applet

                                     Sy       Sc                  In                  Pr      D               Sy
                                  to    ste       re           A     str          pl    ov     ec           en ste
                                m pr m              en           O um                ug id        or          co m
                                 a s e v de            sc          P     en            in e a        at         ur d e
                                    ha e si              ra                                            io
                                                            pi              tw                            n       ag si
                                      bi nt gn                 ng             ith                                   e gn
                                        lit    ed                                                                    m ed
                                           y                                                                           as t
                                                                                                                         ha o
                                                        Kind of mashup technique                                           bi
                                                                                                                              lit
                                                                                                                                  y
Mashability
Ease of performing the mashup




                                                                                                               Twitter, yammer,
                                                                                                               etc.




                                                                              Browser
                                          AS/400                              extensions
                                Flash/Applet

                                     Sy       Sc                  In                  Pr      D               Sy
                                  to    ste       re           A     str          pl    ov     ec           en ste
                                m pr m              en           O um                ug id        or          co m
                                 a s e v de            sc          P     en            in e a        at         ur d e
                                    ha e si              ra                                            io
                                                            pi              tw                            n       ag si
                                      bi nt gn                 ng             ith                                   e gn
                                        lit    ed                                                                    m ed
                                           y                                                                           as t
                                                                                                                         ha o
                                                        Kind of mashup technique                                           bi
                                                                                                                              lit
                                                                                                                                  y
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
How does mashability influence the
    success of a software venture?
          General Public            Enterprise

Ø Create    alternate         Ø Extend   the ROI on IT
       revenue streams        Ø Spreads skills more
Ø Co-optition                    broadly throughout
Ø It   fits reality:             the enterprise
       successful             Ø Encourages  re-
       ventures derive           usable software
       success from              development
       different areas over
       time
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
Enterprise Mashups

●   Example: twitter
    ●   Twitter designed from day one to be mashable
    ●   Explosive growth fueled by ease of mashability
    ●   But how many of the mashups are focused on use
        within an enterprise?
Enterprise Mashups

●   Example: yammer
    ●   nano-pitch: twitter for Enterprise
    ●   Featured in recent Economist magazine technology
        quarterly
    ●   https://www.yammer.com/about/applications
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
Mashups Development
       current challenges
There is no unified model agreed by all the mashup
  service providers for mashup service creation and
                    consumption.

         Different representation of mashup
                       services
            SOAP                  REST



        Different protocols of mashup services

     ATOM         RSS        JSON        Others
Mashups Development
           current challenges

Intensive JavaScript.


 Atom Feed Parsing.


 RSS Feed Parsing.


   JSON Parsing.


Other formats Parsing.
Mashups Development
 current challenges



           Study low level APIs of the
            Mashup service provider.


              Write a great deal of
               integration code.
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
Mashup Application Idea
Mashup Application Idea



Building the application using The
      Mashup Service APIs
[JavaOne 2010] Abstract Mashups for Enterprise Java
Step 1:    Go to the youTube API documentation site for getting the REST search URL
                                      and search parameters:
          http://code.google.com/apis/youtube/2.0/developers_guide_protocol_api_query_p
Step 1:    Go to the youTube API documentation site for getting the REST search URL
                       Open a URL Connection to the youTube Search URL:
Step 2:
                                      and search parameters:
          http://gdata.youtube.com/feeds/api/videos?alt=rss&v=2&max-results=5&q
          http://code.google.com/apis/youtube/2.0/developers_guide_protocol_api_query_p
                                            =#{param}


          Where

          1. alt indicates the feed format to be returned.
          2. v indicates the API version to be used.
          3. max-results indicates the maximum number of returned results.
          4. q indicates the query to search by.
Step 1:              Go to the youTube API documentation site for getting the REST search URL
                                      Open a URL Connection to the youTube Search URL:
     Step 2:
                                                     and search parameters:
                         http://gdata.youtube.com/feeds/api/videos?alt=rss&v=2&max-results=5&q
                                               The rss feed for a single video item
                         http://code.google.com/apis/youtube/2.0/developers_guide_protocol_api_query_p
     Step 3:                                               =#{param}

<?xml version='1.0' encoding='UTF-8'?>
<rss ...>
<channel>
       ...
       <item>
              <guid isPermaLink='false'>tag:youtube.com,2008:video:5EFb77oGRmo</guid>
              <pubDate>Mon, 11 Jun 2007 20:39:55 +0000</pubDate>
              <atom:updated>2010-08-22T06:05:23.000Z</atom:updated>
              <category domain='http://schemas.google.com/g/2005#kind'>
                     http://gdata.youtube.com/schemas/2007#video
              </category>
              <title>JavaOne: Open Possibilities</title>
              <link>http://www.youtube.com/watch?v=5EFb77oGRmo&amp;feature=youtube_gdata</link>
              <author>SunMicrosystemsInc</author>
              <yt:accessControl action='comment' permission='moderated'/>
              <yt:accessControl action='videoRespond' permission='moderated'/>
              <yt:accessControl action='rate' permission='allowed'/>
              <yt:accessControl action='embed' permission='allowed'/>
              <yt:accessControl action='syndicate' permission='allowed'/>
              <yt:accessControl action='commentVote' permission='allowed'/>
              <gd:comments>
                     <gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/5EFb77oGRmo/comments?v=2'
                     countHint='2'/>
              </gd:comments>
              <media:group>
                     <media:title type='plain'>JavaOne: Open Possibilities</media:title>
                     <yt:duration seconds='114'/>
                     <yt:uploaded>2007-06-11T20:39:55.000Z</yt:uploaded>
                     <yt:videoid>5EFb77oGRmo</yt:videoid>
                     ...
              </media:group>
              ...
       </item>
       ...
</channel>
</rss>
[JavaOne 2010] Abstract Mashups for Enterprise Java
Go to the Twitter API documentation site for getting the REST search URL
Step 1:                              and search parameters:
                    http://apiwiki.twitter.com/Twitter-API-Documentation
Go to the Twitter API documentation site for getting the REST search URL
Step 1:                                and search parameters:
                       Open a URL Connection to the twitter Search URL:
Step 2:              http://apiwiki.twitter.com/Twitter-API-Documentation
                   http://search.twitter.com/search.json?q=#{param}&rpp=10



          Where:

          1. q indicates the query to search by.

          2. rpp indicates the number of tweets per page.
Go to the Twitter API documentation site for getting the REST search URL
   Step 1:                                      and search parameters:
                                Open a URL Connection to the twitter Search URL:
   Step 2:                    http://apiwiki.twitter.com/Twitter-API-Documentation
                            http://search.twitter.com/search.json?q=#{param}&rpp=10
                                          The JSON feed for a single tweet
   Step 3:

{"results":
[
     {
          "profile_image_url":"http://a1.twimg.com/profile_images/598447517/
                                 twitterProfilePhoto_normal.jpg",
          "created_at":"Mon, 23 Aug 2010 22:33:30 +0000",
          "from_user":"jamesfarrar",
          "metadata":{"result_type":"recent"},
          "to_user_id":null,
          "text":"RT @oracleopenworld: Larry Ellison to Join EVP Thomas Kurian in
                  JavaOne Keynote to Discuss Future of Java http://bit.ly/ausg7I #javaone10",
          "id":21948746363,
          "from_user_id":23963,
          "geo":null,
          "iso_language_code":"en",
          "source":"&lt;a href=&quot;http://www.tweetdeck.com&quot;
                    rel=&quot;nofollow&quot;&gt;TweetDeck&lt;/a&gt;"
     }
],
     "max_id":21948746363,
     "since_id":0,
     "refresh_url":"?since_id=21948746363&q=javaone",
     "next_page":"?page=2&max_id=21948746363&rpp=1&q=javaone",
     "results_per_page":1,"page":1,
     "completed_in":0.016396,"query":"javaone"
}
[JavaOne 2010] Abstract Mashups for Enterprise Java
Step 1:   Go to the Google Maps API documentation site for creating the map:
              http://code.google.com/apis/maps/documentation/javascript
Step 1:                  Go to the Google Maps API documentation site for creating the map:
    Step 2:                      http://code.google.com/apis/maps/documentation/javascript
                                                      Write a JS code



<script type="text/javascript">
      // Google Maps code ...
      if (GBrowserIsCompatible()) {
          var address = "NY, USA";
          var map     = new GMap2(document.getElementById("map"));
          map.setCenter(new GLatLng(24, 15), 13);
          var geocoder = new GClientGeocoder();
          geocoder.getLatLng(address,
                                           function(location) {
                                          if (!location) {
                                           alert(location + " not found");
                                          } else {
                                           map.setCenter(location, 13);
                                           marker.openInfoWindow(address);

                                             map.addOverlay(marker);

                                               }
                                       }
●                               );

            //add the map control.
                var mapControlPosition = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,
                                                              10));
                map.addControl(new GLargeMapControl(), mapControlPosition);
      }
</script>
SO
Many Web Sites To Visit
                                              Much Documentation To Read



<script type="text/javascript">
// Google Maps code ...
if (GBrowserIsCompatible()) {
         {"results": = "NY, USA";
          var address
         [var map
                   {
                       = new GMap2(document.getElementById("map"));
                                                                                                                 Many Configurations to Do
          map.setCenter(new GLatLng(24, 15), 13);
          var geocoder...> "profile_image_url":"http://a1.twimg.com/profile_images/598447517/
                  <rss = new GClientGeocoder();
          geocoder.getLatLng(address,                               twitterProfilePhoto_normal.jpg",
                  <channel> "created_at":"Mon, 23 Aug 2010 22:33:30 +0000",
                   function(location) {
                          <item>
                            "from_user":"jamesfarrar",
                            if (!location) {
                           <guid isPermaLink='false'>tag:youtube.com,2008:video:5EFb77oGRmo</guid>
                            "metadata":{"result_type":"recent"},
                            alert(location + " not found");
                           <pubDate>Mon, 11 Jun 2007 20:39:55 +0000</pubDate>
                            "to_user_id":null,
                            } else {
                           <atom:updated>2010-08-22T06:05:23.000Z</atom:updated>
                            "text":"RT @oracleopenworld:
                            map.setCenter(location, 13); Larry Ellison to Join EVP Thomas Kurian in
                           <category domain='http://schemas.google.com/g/2005#kind'>
                                         JavaOne Keynote to Discuss Future of Java http://bit.ly/ausg7I
                                     http://gdata.youtube.com/schemas/2007#video
                            #javaone10",
                            marker.openInfoWindow(address);
                           </category>
                            "id":21948746363,
                           <title>JavaOne: Open Possibilities</title>
                            "from_user_id":23963,
                            map.addOverlay(marker);
                           <link>http://www.youtube.com/watch?v=5EFb77oGRmo&amp;feature=youtube_gdata</link>
                            "geo":null,
                           <author>SunMicrosystemsInc</author>
                            "iso_language_code":"en",

                                       Much Code to Write during project construction
                     }     <yt:accessControl action='comment' permission='moderated'/>
                   }        "source":"&lt;a href=&quot;http://www.tweetdeck.com&quot;
                           <yt:accessControl action='videoRespond' permission='moderated'/>
                                           rel=&quot;nofollow&quot;&gt;TweetDeck&lt;/a&gt;"
          );               <yt:accessControl action='rate' permission='allowed'/>
                   }
                           <yt:accessControl action='embed' permission='allowed'/>

                                                    and maintenance
         ],
          //add the map control.
                           <yt:accessControl action='syndicate' permission='allowed'/>
                   "max_id":21948746363,
           var mapControlPosition = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new
                           <yt:accessControl action='commentVote' permission='allowed'/>
GSize(10, 10)); "since_id":0,
                           <gd:comments>
                   "refresh_url":"?since_id=21948746363&q=javaone",
           map.addControl(new GLargeMapControl(), mapControlPosition);
                                     <gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/5EFb77oGRmo/comments?v=2'
                   "next_page":"?page=2&max_id=21948746363&rpp=1&q=javaone",
                                     countHint='2'/>
                   "results_per_page":1,"page":1,
}                          </gd:comments>
</script>          "completed_in":0.016396,"query":"javaone"
         }                 <media:group>
                                     <media:title type='plain'>JavaOne: Open Possibilities</media:title>
                                     <yt:duration seconds='114'/>
                                     <yt:uploaded>2007-06-11T20:39:55.000Z</yt:uploaded>
                                     <yt:videoid>5EFb77oGRmo</yt:videoid>
                                     ...
                           </media:group>
                           </item>
                           ...
                  </channel>
                  </rss>
[JavaOne 2010] Abstract Mashups for Enterprise Java
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
What is Mashups4JSF

  Simplify                               JSF
                        Feed Import   Components
               API        Export
              Wrapper




                      Provides feed reader set of JSF
                                 Provides a
 One of the possible setcomponents for
          Provides a     of APIs components that
ways for simplifying the low different the JSF
            that wraps reading      allows
           level information feeds and the construct
mashup development   types of ofdeveloper to
 in the JavaMashup@Feed annotation for
              World services. rich and customized
                     exporting applicationinside the
                                  mashups
                     data as mashup feeds.page.
                                       web
What is Mashups4JSF?
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
Building the mashup application using
            Mashups4JSF.




<m:map />
                        <mashup:
                   twitterSearchList />
                                              <mashup:
                                          youTubeVideoList />

    <mashup:
 yahooWeather />
Demo

●   This demo runs on GlassFish, Tomcat.
●   Also runs on Google App Engine:
    http://bit.ly/mashups4jsfGAE
AGENDA
1   What is mashability?

    How does mashability influence the success of a venture for
2   both the public and enterprise.


3   Enterprise mashups.


4   Mashups development current challenges.


5   Mashup application idea.


6   What is Mashups4JSF?


7   Building the mashup application using Mashups4JSF.


8   Conclusion
Conclusion
Mashups are important.

Having a mashup meta-model gives developers a lot of
  power.

Key ingredients for a mashup meta-model:

          Mashup integration happens on the server.

          There is a declarative syntax for describing the mashup:

                 This syntax includes a suitably powerful component abstraction
                    model.

          There is a powerful programming language that works
            closely with the declarative syntax.
          Hide the lower level APIs offered by the mashup service
            providers.
References

●   Project Home:
      http://code.google.com/p/mashups4jsf/
●   Project Demo:
      http://www.mashups4jsf.com
●   Mashups4JSF article on developerWorks (on
    WebSphere Application Server and Tomcat):
      http://bit.ly/9YLOhT

More Related Content

Similar to [JavaOne 2010] Abstract Mashups for Enterprise Java (20)

PDF
Rewire the Net
Davide Eynard
 
PDF
Open Web Apps and the Mozilla Labs Apps project
Robin Hawkes
 
PDF
Euromarine jan 2012
Johan Lundin
 
PDF
The Europeana API and other technical interfaces
David Haskiya
 
PPTX
Creative product strategy_-_10-14-08
HalawiSlideShare
 
PPT
Computer Devices Classification
Rey Belen
 
PDF
Emerging Interaction Design Trends
Veena Sonwalkar
 
PDF
HTML5 & JavaScript: The Future Now
Robin Hawkes
 
PDF
Trends & Momentum in Events - 2013
Randle Stonier
 
PDF
Developing an FTTx Ecosystem
IEEE Standards Association (IEEE SA)
 
KEY
Gclogs jdd
Kirk Pepperdine
 
PDF
Book extracts: An Enterprise Architecture Development Framework
Adrian Grigoriu
 
PDF
Full circle
guest3de476
 
PDF
J Greene Portfolio 2008
archisonic
 
PDF
Nate tech deck
FullyCroisened
 
PDF
Telling Stories Through Design
Hannah Donovan
 
PDF
Wim De Waele - IBBT INCA awards
osimod
 
PDF
Rorotika VAS products
Frans_Joubert
 
PDF
Rorotika VAS products
Rorotika Technologies (Pty) Ltd
 
ODP
Google
jandrobonet
 
Rewire the Net
Davide Eynard
 
Open Web Apps and the Mozilla Labs Apps project
Robin Hawkes
 
Euromarine jan 2012
Johan Lundin
 
The Europeana API and other technical interfaces
David Haskiya
 
Creative product strategy_-_10-14-08
HalawiSlideShare
 
Computer Devices Classification
Rey Belen
 
Emerging Interaction Design Trends
Veena Sonwalkar
 
HTML5 & JavaScript: The Future Now
Robin Hawkes
 
Trends & Momentum in Events - 2013
Randle Stonier
 
Developing an FTTx Ecosystem
IEEE Standards Association (IEEE SA)
 
Gclogs jdd
Kirk Pepperdine
 
Book extracts: An Enterprise Architecture Development Framework
Adrian Grigoriu
 
Full circle
guest3de476
 
J Greene Portfolio 2008
archisonic
 
Nate tech deck
FullyCroisened
 
Telling Stories Through Design
Hannah Donovan
 
Wim De Waele - IBBT INCA awards
osimod
 
Rorotika VAS products
Frans_Joubert
 
Rorotika VAS products
Rorotika Technologies (Pty) Ltd
 
Google
jandrobonet
 

More from Hazem Saleh (15)

PDF
[FullStack NYC 2019] Effective Unit Tests for JavaScript
Hazem Saleh
 
PDF
Mockito 2.x Migration - Droidcon UK 2018
Hazem Saleh
 
PDF
JavaScript Unit Testing with an Angular 5.x Use Case 101
Hazem Saleh
 
PPTX
[AnDevCon 2016] Mutation Testing for Android
Hazem Saleh
 
PPTX
[ApacheCon 2016] Advanced Apache Cordova
Hazem Saleh
 
PPTX
[Devoxx Morocco 2015] Apache Cordova In Action
Hazem Saleh
 
PPTX
Apache Cordova In Action
Hazem Saleh
 
PPTX
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
PDF
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
PDF
Dojo >= 1.7 Kickstart
Hazem Saleh
 
PDF
Efficient JavaScript Unit Testing, JavaOne China 2013
Hazem Saleh
 
PDF
JSF Mashups in Action
Hazem Saleh
 
PDF
Efficient JavaScript Unit Testing, March 2013
Hazem Saleh
 
PDF
JavaScript tools
Hazem Saleh
 
PDF
Efficient JavaScript Unit Testing, May 2012
Hazem Saleh
 
[FullStack NYC 2019] Effective Unit Tests for JavaScript
Hazem Saleh
 
Mockito 2.x Migration - Droidcon UK 2018
Hazem Saleh
 
JavaScript Unit Testing with an Angular 5.x Use Case 101
Hazem Saleh
 
[AnDevCon 2016] Mutation Testing for Android
Hazem Saleh
 
[ApacheCon 2016] Advanced Apache Cordova
Hazem Saleh
 
[Devoxx Morocco 2015] Apache Cordova In Action
Hazem Saleh
 
Apache Cordova In Action
Hazem Saleh
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
Dojo >= 1.7 Kickstart
Hazem Saleh
 
Efficient JavaScript Unit Testing, JavaOne China 2013
Hazem Saleh
 
JSF Mashups in Action
Hazem Saleh
 
Efficient JavaScript Unit Testing, March 2013
Hazem Saleh
 
JavaScript tools
Hazem Saleh
 
Efficient JavaScript Unit Testing, May 2012
Hazem Saleh
 
Ad

Recently uploaded (20)

PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Ad

[JavaOne 2010] Abstract Mashups for Enterprise Java

  • 1. Abstract Mashups for Enterprise Java Ed Burns Hazem Saleh
  • 2. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 3. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 4. Mashability adjective The property of a software system to be re-used in contexts not imagined at the time the system was first deployed Mashability is a matter of degree Not just embedding It's possible for software to only have superficial mashability
  • 5. Mashability Ease of performing the mashup Twitter, yammer, etc. Browser AS/400 extensions Flash/Applet Sy Sc In Pr D Sy to ste re A str pl ov ec en ste m pr m en O um ug id or co m a s e v de sc P en in e a at ur d e ha e si ra io pi tw n ag si bi nt gn ng ith e gn lit ed m ed y as t ha o Kind of mashup technique bi lit y
  • 6. Mashability Ease of performing the mashup Twitter, yammer, etc. Browser AS/400 extensions Flash/Applet Sy Sc In Pr D Sy to ste re A str pl ov ec en ste m pr m en O um ug id or co m a s e v de sc P en in e a at ur d e ha e si ra io pi tw n ag si bi nt gn ng ith e gn lit ed m ed y as t ha o Kind of mashup technique bi lit y
  • 7. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 8. How does mashability influence the success of a software venture? General Public Enterprise Ø Create alternate Ø Extend the ROI on IT revenue streams Ø Spreads skills more Ø Co-optition broadly throughout Ø It fits reality: the enterprise successful Ø Encourages re- ventures derive usable software success from development different areas over time
  • 9. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 10. Enterprise Mashups ● Example: twitter ● Twitter designed from day one to be mashable ● Explosive growth fueled by ease of mashability ● But how many of the mashups are focused on use within an enterprise?
  • 11. Enterprise Mashups ● Example: yammer ● nano-pitch: twitter for Enterprise ● Featured in recent Economist magazine technology quarterly ● https://www.yammer.com/about/applications
  • 12. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 13. Mashups Development current challenges There is no unified model agreed by all the mashup service providers for mashup service creation and consumption. Different representation of mashup services SOAP REST Different protocols of mashup services ATOM RSS JSON Others
  • 14. Mashups Development current challenges Intensive JavaScript. Atom Feed Parsing. RSS Feed Parsing. JSON Parsing. Other formats Parsing.
  • 15. Mashups Development current challenges Study low level APIs of the Mashup service provider. Write a great deal of integration code.
  • 16. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 18. Mashup Application Idea Building the application using The Mashup Service APIs
  • 20. Step 1: Go to the youTube API documentation site for getting the REST search URL and search parameters: http://code.google.com/apis/youtube/2.0/developers_guide_protocol_api_query_p
  • 21. Step 1: Go to the youTube API documentation site for getting the REST search URL Open a URL Connection to the youTube Search URL: Step 2: and search parameters: http://gdata.youtube.com/feeds/api/videos?alt=rss&v=2&max-results=5&q http://code.google.com/apis/youtube/2.0/developers_guide_protocol_api_query_p =#{param} Where 1. alt indicates the feed format to be returned. 2. v indicates the API version to be used. 3. max-results indicates the maximum number of returned results. 4. q indicates the query to search by.
  • 22. Step 1: Go to the youTube API documentation site for getting the REST search URL Open a URL Connection to the youTube Search URL: Step 2: and search parameters: http://gdata.youtube.com/feeds/api/videos?alt=rss&v=2&max-results=5&q The rss feed for a single video item http://code.google.com/apis/youtube/2.0/developers_guide_protocol_api_query_p Step 3: =#{param} <?xml version='1.0' encoding='UTF-8'?> <rss ...> <channel> ... <item> <guid isPermaLink='false'>tag:youtube.com,2008:video:5EFb77oGRmo</guid> <pubDate>Mon, 11 Jun 2007 20:39:55 +0000</pubDate> <atom:updated>2010-08-22T06:05:23.000Z</atom:updated> <category domain='http://schemas.google.com/g/2005#kind'> http://gdata.youtube.com/schemas/2007#video </category> <title>JavaOne: Open Possibilities</title> <link>http://www.youtube.com/watch?v=5EFb77oGRmo&amp;feature=youtube_gdata</link> <author>SunMicrosystemsInc</author> <yt:accessControl action='comment' permission='moderated'/> <yt:accessControl action='videoRespond' permission='moderated'/> <yt:accessControl action='rate' permission='allowed'/> <yt:accessControl action='embed' permission='allowed'/> <yt:accessControl action='syndicate' permission='allowed'/> <yt:accessControl action='commentVote' permission='allowed'/> <gd:comments> <gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/5EFb77oGRmo/comments?v=2' countHint='2'/> </gd:comments> <media:group> <media:title type='plain'>JavaOne: Open Possibilities</media:title> <yt:duration seconds='114'/> <yt:uploaded>2007-06-11T20:39:55.000Z</yt:uploaded> <yt:videoid>5EFb77oGRmo</yt:videoid> ... </media:group> ... </item> ... </channel> </rss>
  • 24. Go to the Twitter API documentation site for getting the REST search URL Step 1: and search parameters: http://apiwiki.twitter.com/Twitter-API-Documentation
  • 25. Go to the Twitter API documentation site for getting the REST search URL Step 1: and search parameters: Open a URL Connection to the twitter Search URL: Step 2: http://apiwiki.twitter.com/Twitter-API-Documentation http://search.twitter.com/search.json?q=#{param}&rpp=10 Where: 1. q indicates the query to search by. 2. rpp indicates the number of tweets per page.
  • 26. Go to the Twitter API documentation site for getting the REST search URL Step 1: and search parameters: Open a URL Connection to the twitter Search URL: Step 2: http://apiwiki.twitter.com/Twitter-API-Documentation http://search.twitter.com/search.json?q=#{param}&rpp=10 The JSON feed for a single tweet Step 3: {"results": [ { "profile_image_url":"http://a1.twimg.com/profile_images/598447517/ twitterProfilePhoto_normal.jpg", "created_at":"Mon, 23 Aug 2010 22:33:30 +0000", "from_user":"jamesfarrar", "metadata":{"result_type":"recent"}, "to_user_id":null, "text":"RT @oracleopenworld: Larry Ellison to Join EVP Thomas Kurian in JavaOne Keynote to Discuss Future of Java http://bit.ly/ausg7I #javaone10", "id":21948746363, "from_user_id":23963, "geo":null, "iso_language_code":"en", "source":"&lt;a href=&quot;http://www.tweetdeck.com&quot; rel=&quot;nofollow&quot;&gt;TweetDeck&lt;/a&gt;" } ], "max_id":21948746363, "since_id":0, "refresh_url":"?since_id=21948746363&q=javaone", "next_page":"?page=2&max_id=21948746363&rpp=1&q=javaone", "results_per_page":1,"page":1, "completed_in":0.016396,"query":"javaone" }
  • 28. Step 1: Go to the Google Maps API documentation site for creating the map: http://code.google.com/apis/maps/documentation/javascript
  • 29. Step 1: Go to the Google Maps API documentation site for creating the map: Step 2: http://code.google.com/apis/maps/documentation/javascript Write a JS code <script type="text/javascript"> // Google Maps code ... if (GBrowserIsCompatible()) { var address = "NY, USA"; var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(24, 15), 13); var geocoder = new GClientGeocoder(); geocoder.getLatLng(address, function(location) { if (!location) { alert(location + " not found"); } else { map.setCenter(location, 13); marker.openInfoWindow(address); map.addOverlay(marker); } } ● ); //add the map control. var mapControlPosition = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 10)); map.addControl(new GLargeMapControl(), mapControlPosition); } </script>
  • 30. SO
  • 31. Many Web Sites To Visit Much Documentation To Read <script type="text/javascript"> // Google Maps code ... if (GBrowserIsCompatible()) { {"results": = "NY, USA"; var address [var map { = new GMap2(document.getElementById("map")); Many Configurations to Do map.setCenter(new GLatLng(24, 15), 13); var geocoder...> "profile_image_url":"http://a1.twimg.com/profile_images/598447517/ <rss = new GClientGeocoder(); geocoder.getLatLng(address, twitterProfilePhoto_normal.jpg", <channel> "created_at":"Mon, 23 Aug 2010 22:33:30 +0000", function(location) { <item> "from_user":"jamesfarrar", if (!location) { <guid isPermaLink='false'>tag:youtube.com,2008:video:5EFb77oGRmo</guid> "metadata":{"result_type":"recent"}, alert(location + " not found"); <pubDate>Mon, 11 Jun 2007 20:39:55 +0000</pubDate> "to_user_id":null, } else { <atom:updated>2010-08-22T06:05:23.000Z</atom:updated> "text":"RT @oracleopenworld: map.setCenter(location, 13); Larry Ellison to Join EVP Thomas Kurian in <category domain='http://schemas.google.com/g/2005#kind'> JavaOne Keynote to Discuss Future of Java http://bit.ly/ausg7I http://gdata.youtube.com/schemas/2007#video #javaone10", marker.openInfoWindow(address); </category> "id":21948746363, <title>JavaOne: Open Possibilities</title> "from_user_id":23963, map.addOverlay(marker); <link>http://www.youtube.com/watch?v=5EFb77oGRmo&amp;feature=youtube_gdata</link> "geo":null, <author>SunMicrosystemsInc</author> "iso_language_code":"en", Much Code to Write during project construction } <yt:accessControl action='comment' permission='moderated'/> } "source":"&lt;a href=&quot;http://www.tweetdeck.com&quot; <yt:accessControl action='videoRespond' permission='moderated'/> rel=&quot;nofollow&quot;&gt;TweetDeck&lt;/a&gt;" ); <yt:accessControl action='rate' permission='allowed'/> } <yt:accessControl action='embed' permission='allowed'/> and maintenance ], //add the map control. <yt:accessControl action='syndicate' permission='allowed'/> "max_id":21948746363, var mapControlPosition = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new <yt:accessControl action='commentVote' permission='allowed'/> GSize(10, 10)); "since_id":0, <gd:comments> "refresh_url":"?since_id=21948746363&q=javaone", map.addControl(new GLargeMapControl(), mapControlPosition); <gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/5EFb77oGRmo/comments?v=2' "next_page":"?page=2&max_id=21948746363&rpp=1&q=javaone", countHint='2'/> "results_per_page":1,"page":1, } </gd:comments> </script> "completed_in":0.016396,"query":"javaone" } <media:group> <media:title type='plain'>JavaOne: Open Possibilities</media:title> <yt:duration seconds='114'/> <yt:uploaded>2007-06-11T20:39:55.000Z</yt:uploaded> <yt:videoid>5EFb77oGRmo</yt:videoid> ... </media:group> </item> ... </channel> </rss>
  • 33. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 34. What is Mashups4JSF Simplify JSF Feed Import Components API Export Wrapper Provides feed reader set of JSF Provides a One of the possible setcomponents for Provides a of APIs components that ways for simplifying the low different the JSF that wraps reading allows level information feeds and the construct mashup development types of ofdeveloper to in the JavaMashup@Feed annotation for World services. rich and customized exporting applicationinside the mashups data as mashup feeds.page. web
  • 36. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 37. Building the mashup application using Mashups4JSF. <m:map /> <mashup: twitterSearchList /> <mashup: youTubeVideoList /> <mashup: yahooWeather />
  • 38. Demo ● This demo runs on GlassFish, Tomcat. ● Also runs on Google App Engine: http://bit.ly/mashups4jsfGAE
  • 39. AGENDA 1 What is mashability? How does mashability influence the success of a venture for 2 both the public and enterprise. 3 Enterprise mashups. 4 Mashups development current challenges. 5 Mashup application idea. 6 What is Mashups4JSF? 7 Building the mashup application using Mashups4JSF. 8 Conclusion
  • 40. Conclusion Mashups are important. Having a mashup meta-model gives developers a lot of power. Key ingredients for a mashup meta-model: Mashup integration happens on the server. There is a declarative syntax for describing the mashup: This syntax includes a suitably powerful component abstraction model. There is a powerful programming language that works closely with the declarative syntax. Hide the lower level APIs offered by the mashup service providers.
  • 41. References ● Project Home: http://code.google.com/p/mashups4jsf/ ● Project Demo: http://www.mashups4jsf.com ● Mashups4JSF article on developerWorks (on WebSphere Application Server and Tomcat): http://bit.ly/9YLOhT